0

Oracleには、テーブルをクエリして2つのフィールドを変数に書き込むストアドプロシージャがあります。問題は、何も返されない場合にOracleがエラーをスローすることです。これが私のコードです

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

カウントでNVLを使用しても、エラーがスローされます

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

4

1 に答える 1

0

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

一般に、SELECT ... INTO0行を返すステートメントを処理する場合は、その場合に2つのローカル変数に含める値を指定する必要があります。empcount0になり、NULLになりたい場合は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;
于 2012-04-19T23:00:39.743 に答える