Oracle:动态 SQL 更新不工作

Oracle: Dynamic SQL with Update not working

我有这个说明

UPDATE TABLE1
SET INC = 
(select INC from TABLE2
WHERE KEY = 'KEY_VALUE1' 
FETCH FIRST 1 ROW ONLY); 

如果我从 sqlPlus 运行 或者如果我在 PLSQL 中使用,这工作正常但是,如果我在动态 SQL 中使用,则不工作

sqlStmt:= 'UPDATE TABLE1'
|| 'SET INC = '
|| '(select INC from TABLE2 '
|| 'WHERE KEY = ''' || v_key_value || ''' '
|| 'FETCH FIRST 1 ROW ONLY); ';

BEGIN
  EXECUTE IMMEDIATE sqlStmt;
EXCEPTION
  WHEN OTHERS THEN    
    dbms_output.put_line('{"errorcode":"' || SQLERRM);    
    ROLLBACK;
END;

此指令return此错误: {"errorcode":"ORA-00933: comando SQL terminato erroneamente

有人能帮帮我吗?

此致, 马可

您不希望在构建并传递给 execute immediate 的字符串末尾有分号。

这不是您出错的原因。但是使用绑定变量而不是连接文字来编写它对数据库来说要好得多。当然,由于没有理由对这种 update 语句使用动态 SQL,我猜你的实际用例是不同的,你实际上使用的是绑定变量 and/or 实际上绑定变量不是一个选项是有原因的。