2016-10-07 28 views
0

まず、私はネイティブスピーカーではなく、私の英語には申し訳ありません。オラクルキャッチ外部キー違反

私はOracleストアドプロシージャを持っています。このストアドプロシージャ内で、私はORA-02291例外をスローする挿入がありますが、私の問題はそれが例外をスローしないということです。

CREATE OR REPLACE PROCEDURE X.mi_procedure (
    xano   IN  NUMBER, 
    xprograma IN  VARCHAR2, 
    Xciclo IN VARCHAR2, 
    yresultado OUT  BOOLEAN, 
    ycodope  OUT  VARCHAR2 
) 
IS 

............ 



DBMS_OUTPUT.PUT_LINE('hola'); 

    INSERT INTO x.A 
       (ano, cod_programa, centro, area_estudio, c_destino, REF, 
       cursos, num_becas, num_meses, observaciones) 
     SELECT ano, cod_programa, centro, area_estudio, c_destino, REF, cursos, 
      num_becas, num_meses, observaciones 
      FROM X.W 
     WHERE cod_programa = xprograma AND ano = xano 
     AND xciclo ='P; 


DBMS_OUTPUT.PUT_LINE('error'||SQLCODE) 
.................... 
COMMIT; 
EXCEPTION 
WHEN OTHERS THEN 
    RAISE; 
end X.mi_procedure; 

私の問題は、Oracleが手順完全言うとどんな ORA-02291例外をスローし、dmbsoputはないということです。

はいはい error0

しかしIでのSQL実行している場合SCRIPT ORACLEは ORA-02291例外をスローします。

誰かがこの状況を説明できますか?

問題は手続きのparameteresの値だった

+0

ストアドプロシージャをコンパイルするときに例外を待っていますか? – AlexSmet

+0

これは通常、実行は実際にはそのブロックに到達しないことを意味します。私はそれがあなたの上に 'put_line( 'hola')'を持っていて、そこに実行があるかどうかを調べると考えています。プロシージャは実際にそれを画面(または出力を指示している場所)に書き出しますか? – mathguy

答えて

0

ありがとう....これらのパラメータは、そのSQLのレコードを与えていません。

ありがとうございました。