0

単純な動的 pl/sql 挿入ステートメントの構文の問題。私のコードは次のとおりです。

sql_stmt     VARCHAR2(500);

sql_stmt := 'PKG_COLLECTION.COLLECTION_INS_01(:1,:2,:3,:4,:5,:6)';
execute immediate sql_stmt using 
        IN OUT V_P1, 
        IN OUT V_P2, 
        IN OUT V_P3, 
        IN OUT V_P4, 
        IN OUT V_P5, 
        IN OUT V_P6;  

(エラー: ORA-00900: SQL ステートメントが無効です)

実際の構文はどのように見えるべきですか?

4

2 に答える 2

1

この部分を変更して、SQL ではなく PL/SQL にする必要があります。

sql_stmt := 'begin PKG_COLLECTION.COLLECTION_INS_01(:1,:2,:3,:4,:5,:6); end;';
于 2013-04-25T14:09:29.010 に答える
0

実行されたステートメントは動的ではないため、 execute immediatelyを使用しないことを強くお勧めします。代わりに、私はシンプルに行きます

PKG_COLLECTION.COLLECTION_INS_01(V_P1,V_P2,V_P3,V_P4,V_P5,V_P6);

これは同じことを達成しますが、よりクリーンで、署名が変更された場合に無効なプロシージャ/パッケージ/関数になりPKG_COLLECTION.COLLECTION_INS_01ます。

于 2013-04-25T14:52:23.327 に答える