0

の別のテーブルの select ステートメントから取得された値で insert ステートメントを使用できますEXECUTE IMMEDIATEか?

お気に入り :

execute immediate('insert into table values(select rowid from table where column='NEW')');

この可能性がない場合は、プロシージャ内のカーソルの宣言の前に挿入ステートメントを配置できますか。

どうもありがとう。

4

2 に答える 2

1

はい、できますが、構文と引用符を整理する必要があります。

execute immediate('insert into table (column_name) select rowid from table where column=''NEW'''); 

編集:

さらに良いことに、列名へのハードコードされた参照の代わりにバインド変数を使用してください。

于 2012-08-01T13:53:44.397 に答える
0

テストした結果、どのような結果が得られましたか?

あなたの構文は少しずれていますが、以下に示すように、間違いなく実行可能です。

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>
于 2012-08-01T13:52:31.780 に答える