我可以将插入语句与来自另一个表上的选择语句的值一起使用EXECUTE IMMEDIATE
吗?
喜欢 :
execute immediate('insert into table values(select rowid from table where column='NEW')');
如果不可能,我可以在过程中的游标声明之前放置一个插入语句。
多谢。
我可以将插入语句与来自另一个表上的选择语句的值一起使用EXECUTE IMMEDIATE
吗?
喜欢 :
execute immediate('insert into table values(select rowid from table where column='NEW')');
如果不可能,我可以在过程中的游标声明之前放置一个插入语句。
多谢。
是的,你可以,但你需要整理你的语法和引号:
execute immediate('insert into table (column_name) select rowid from table where column=''NEW''');
编辑:
更好的是,使用绑定变量而不是对列名的硬编码引用。
当你测试它时,你得到了什么结果?
您的语法有点偏离,但是,正如您在下面看到的,它绝对是可行的。
SQL> CREATE TABLE emp2 AS SELECT * FROM emp WHERE 1 = 0;
Table created.
SQL> BEGIN
2 EXECUTE IMMEDIATE 'INSERT INTO emp2 (empno, ename, job) SELECT e.empno, e.ename, e.job FROM emp e WHERE e.deptno = 10';
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> SELECT * FROM emp2;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------------- ---------- ---------- ----------
7782 CLARK MANAGER
7839 KING PRESIDENT
7934 MILLER CLERK
SQL>