2017-01-10 4 views
0

私は、クエリを持っている:SELECT INTO文でNULL値を持つ変数への値を取得する方法は?

DECLARE 
    id_tmp number; 
BEGIN 
    select id into id_tmp from ...; 
END; 

だからクエリによって選択されていませんidが存在しない可能性があります。そして、私はエラーを持っている:

ORA-01403: data not found

これを処理し、NULLid_tmpを割り当てるにはどのように?

+0

btwあなたの例では、 'id_tmp'はすでにnullであるため、代入する必要はありません。私はこれがちょうど簡略化された例かもしれないことを認めます。 –

+0

@WilliamRobertsonでは、SELECT INTO文で再割り当てする必要があります。それ以外の場合は、「データが見つかりません」というエラーが発生しています。 –

+0

右。私は、変数に値を代入しようとしたときに 'select into'操作が失敗した場合、その値はnullであり、nullに設定するための別のステップは必要ないことを意味しました。しかし、おそらく私はあなたが「可能なヌル値」によって何を意味するのか理解していません。 –

答えて

1

DECLARE 
    id_tmp number; 
BEGIN 
    begin 
     select id 
     into id_tmp 
     from (
      select 1 as id 
      from dual 
      where 1=2 
      ); 
    exception 
    when NO_DATA_FOUND then 
     id_tmp := null; 
    end; 
END; 

別の方法は、同じ仮定の下で、nullときを返す集約関数であることができクエリはデータを返しません:

0

errors handlingをお読みください。あなたのケースでは、あらかじめ定義されたエラーNO_DATA_FOUNDに興味があるはずです。あなたは、エラーをキャッチし、そこにid_tmpにnullを割り当てる必要があります。一つの方法は、NO_DATA_FOUNDを処理することができ、あなたのクエリが一列のみ、または全く行を返すことができると仮定すると

関連する問題