它應該是這樣的:
DECLARE
v_RULE_NAME VARCHAR2(200):='ABC';
v_user_id NUMBER:=2;
begin
execute immediate 'INSERT INTO BW_TXS
VALUES (TXN_ID.NEXTVAL,'||v_user_id||',SYSDATE,''super '||v_RULE_NAME
||''',''super '||v_RULE_NAME||''')';
end;
/
但請,使用動態SQL,使用綁定變量的時候(在這個簡單的例子,雖然,動態SQL是總矯枉過正)。即
DECLARE
v_RULE_NAME VARCHAR2(200):='ABC';
v_user_id NUMBER:=2;
begin
execute immediate 'INSERT INTO BW_TXS
VALUES (TXN_ID.NEXTVAL,:userid,SYSDATE,:rule, :rule)'
using v_user_id, 'super ' || v_rule_name, 'super ' || v_rule_name;
end;
/
(不知道你爲什麼在兩列中有相同的字符串)。沒有這個簡單例子動態SQL是可能的:
DECLARE
v_RULE_NAME VARCHAR2(200):='ABC';
v_user_id NUMBER:=2;
begin
INSERT INTO BW_TXS
VALUES (TXN_ID.NEXTVAL,v_user_id,SYSDATE, 'super ' || v_rule_name,
'super ' || v_rule_name);
end;
/
還你應該總是在你插入像insert into bw_txt (a, b, c, d..) values (...)
定義的列名,如果有人將一列用默認值後,你的代碼將打破。
您的查詢得到錯誤 – user1990383 2013-04-06 18:23:16