2012-04-19 15 views
0

Oracleでは、テーブルを照会して2つのフィールドを変数に書き込むストアドプロシージャがあります。問題は何も返されないときにエラーをスローします。ここに私のコードがあるカウントがまだ行1でエラーに集計のヌル数

エラーをスローでNVLを使用して

SELECT COUNT (empno),Name 
    INTO empcount,empname 
    FROM lv_request_header 
    WHERE empno = emp 
    AND request_id = rqid 
    GROUP BY empname 

:ORA-20000:見つからないORA-06512 lv_request_header:13

+0

ような何かを行うことができますか? – user1345246

+0

行1のエラー: ORA-20000:lv_request_headerが見つかりません ORA-06512:行13 – user1345246

答えて

0

エラーあなたのラインでpostedは、テーブルlv_request_headerが存在しないか、プロシージャの所有者がそのテーブルにアクセスできないという問題を示しています。プロシージャーの所有者以外のユーザーがこの表を所有している場合は、表名をスキーマ名で修飾するか、そのオブジェクトの同義語を作成する必要があります。

一般に、0行を返す文のSELECT ... INTOを処理する場合、2つのローカル変数にどのような値を設定するかを指定する必要があります。あなたはempcountがNULLであることを0とempnameになりたい場合は、あなたはそれが変数に空白のレコードを置くことができますどのようにこの

BEGIN 
    SELECT COUNT (empno),Name 
    INTO empcount,empname 
    FROM lv_request_header 
    WHERE empno = emp 
    AND request_id = rqid 
    GROUP BY empname 
EXCEPTION 
    WHEN no_data_found 
    THEN 
    empcount := 0; 
    empname := NULL; 
END; 
+0

select into queryの後にコードがあります。私の質問は、プロシージャのボットンで例外処理がすべて行われているか、または残りのコードがexcpeption処理の後に来るかどうかです。 – user1345246

+0

@ user1345246 - 例外ハンドラは 'BEGIN ... END'ブロックの一部です。したがって、ここで行ったように、 'SELECT'文を独自のPL/SQLブロックにラップすると仮定して、次のコード行を実行しても実行は継続されます。 –