Sql 在子句中立即执行
我有这样的声明Sql 在子句中立即执行,sql,oracle,Sql,Oracle,我有这样的声明 EXECUTE IMMEDIATE 'INSERT INTO TABLE (SELECT * FROM SOMETABLE)'; 而且效果很好 当我尝试使用WHERE with IN子句时,它是抛出错误 EXECUTE IMMEDIATE 'INSERT INTO TABLE (SELECT * FROM SOMETABLE WHERE COLUMN_VALUE IN ('||'EMP'||','||'PEN'||','||'CWK'||') )'; 我做错了什么。oracl
EXECUTE IMMEDIATE 'INSERT INTO TABLE (SELECT * FROM SOMETABLE)';
而且效果很好
当我尝试使用WHERE with IN子句时,它是抛出错误
EXECUTE IMMEDIATE 'INSERT INTO TABLE (SELECT * FROM SOMETABLE WHERE COLUMN_VALUE IN ('||'EMP'||','||'PEN'||','||'CWK'||') )';
我做错了什么。oracle是否支持此功能 您没有转义字符串值。您的直接解决方案是在列表中为
中的值添加单引号。为此,您需要复制单引号(它自身转义),因此查询如下所示:
EXECUTE IMMEDIATE 'INSERT INTO TABLE SELECT * FROM SOMETABLE WHERE COLUMN_VALUE IN (''' || 'EMP' || ''',''' || 'PEN'|| ''',''' || 'CWK'|| ''') ';
但是,您可能希望查看将值传递到查询中的其他方法;咀嚼字符串可能很危险,特别是当它们是用户输入时
此外,SELECT
不需要括号。而且,您应该列出插入的所有列
是的,比如使用123执行即时“更新员工”\u临时设置佣金\u pct=:x;为什么要使用executeimmediate
进行简单的INSERT
?如果只使用INSERT-INTO-TABLE(选择…