Vin*_*eet 1 oracle plsql plsqldeveloper
我试图使用Execute Immediate在下面运行此代码,但它不起作用,值是正确的.
请提供正确的代码.
declare
v_count number:=1;
v_conc_name varchar2(400);
v_val VARCHAR2(20):='vineet';
BEGIN
v_conc_name:='INT_AP_PAY_CONV';
EXECUTE IMMEDIATE 'UPDATE xxx_cnc_prg_details
SET
PARAMETER'||v_count||'='
||v_val||' where CONCURRENT_PROGRAM_SHORT_NAME= '||v_conc_name;
end;
Run Code Online (Sandbox Code Playgroud)
使用绑定变量要容易得多(也就是更好的做法):
declare
v_count number:=1;
v_conc_name varchar2(400);
v_val VARCHAR2(20):='vineet';
BEGIN
v_conc_name:='INT_AP_PAY_CONV';
EXECUTE IMMEDIATE 'UPDATE xxx_cnc_prg_details
SET
PARAMETER'||v_count||'=:bv_val
where CONCURRENT_PROGRAM_SHORT_NAME=:bv_conc_name'
USING v_val, v_conc_name;
end;
Run Code Online (Sandbox Code Playgroud)
使用字符串变量来保存SQL也是一种方便的做法.然后,您可以使用DBMS_OUTPUT.PUT_LINE来查看和验证它:
declare
v_count number:=1;
v_conc_name varchar2(400);
v_val VARCHAR2(20):='vineet';
v_sql LONG;
BEGIN
v_conc_name:='INT_AP_PAY_CONV';
v_sql := 'UPDATE xxx_cnc_prg_details
SET
PARAMETER'||v_count||'=:bv_val
where CONCURRENT_PROGRAM_SHORT_NAME=:bv_conc_name';
EXECUTE IMMEDIATE v_sql USING v_val, v_conc_name;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |