の別のテーブルの select ステートメントから取得された値で insert ステートメントを使用できますEXECUTE IMMEDIATE
か?
お気に入り :
execute immediate('insert into table values(select rowid from table where column='NEW')');
この可能性がない場合は、プロシージャ内のカーソルの宣言の前に挿入ステートメントを配置できますか。
どうもありがとう。
の別のテーブルの select ステートメントから取得された値で insert ステートメントを使用できます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>