sql >> データベース >  >> RDS >> Oracle

OracleエラーORA-06512

    ORA-06512はエラー・スタックの一部です。例外が発生した行番号はわかりますが、例外の原因はわかりません。これは通常、スタックの残りの部分(まだ投稿していない)に示されています。

    コメントであなたは言った

    さて、あなたのコードはこれを行います:

    IF ((pNum < 12) OR (pNum > 14)) THEN     
        RAISE vSOME_EX;
    

    つまり、pNumが12から14の間にない場合、例外が発生します。それでは、エラースタックの残りの部分にこの行が含まれていますか?

    もしそうなら、あなたがする必要があるのはエラーを処理するために例外ブロックを追加することです。おそらく:

    PROCEDURE PX(pNum INT,pIdM INT,pCv VARCHAR2,pSup FLOAT)
    AS
        vSOME_EX EXCEPTION;
    
    BEGIN 
        IF ((pNum < 12) OR (pNum > 14)) THEN     
            RAISE vSOME_EX;
        ELSE  
            EXECUTE IMMEDIATE  'INSERT INTO M'||pNum||'GR (CV, SUP, IDM'||pNum||') VALUES('||pCv||', '||pSup||', '||pIdM||')';
        END IF;
    exception
        when vsome_ex then
             raise_application_error(-20000
                                     , 'This is not a valid table:  M'||pNum||'GR');
    
    END PX;
    

    ドキュメントでは、PL/SQL例外の処理について詳しく説明しています。



    1. プリペアドステートメントを使用してSQL_CALC_FOUND_ROWS値を取得するにはどうすればよいですか?

    2. MySQLバックアップデータベース

    3. 複数のレコードを挿入してID値を取得するにはどうすればよいですか?

    4. SQLで小数の分数を取得するにはどうすればよいですか