使用oracle中的立即执行更新

时间:2018-11-17 13:43:18

标签: sql oracle plsql

DECLARE
v_var1 := varchar2(100);
v_var2 := varchar2(100);
v_var3 := varchar2(100);
v_var4 := varchar2(100);

BEGIN

v_var1 := 'col';
v_var2 := 'val1';
v_var3 := 'val2';
v_var4 := 'vall3';

EXECUTE IMMEDIATE 'UPDATE TABLENAME SET '|| v_var1 ||' = :v_var2  WHERE ID =  :v_var3 AND COUNTRY =  :v_var4'
USING v_var2,v_var3,v_var4;

END;

是否可以将列设置为动态更新?抛出错误

  

ORA-06550:第2行,第8列:PLS-00103:遇到了符号“ =”   当期望以下其中之一时

。检查了其他帖子,但仅能找到如何动态传递表名。这个脚本有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您的代码必须是这样的:

DECLARE
v_var1 varchar2(100);
v_var2 varchar2(100);
v_var3 varchar2(100);
v_var4 varchar2(100);

BEGIN

v_var1 := 'col';
v_var2 := 'val1';
v_var3 := 'val2';
v_var4 := 'vall3';
...

DECLARE
v_var1 varchar2(100) := 'col';
v_var2 varchar2(100) := 'val1';
v_var3 varchar2(100) := 'val2';
v_var4 varchar2(100) := 'vall3';

BEGIN

...