Select gxbj Into v_GXBJ From DJ_JTSJ Where jh=p_JingHao;
如果这一句出错,我想给 v_GXBJ 赋一个值,并继续执行下面的语句.
if GXBJ =......
....
这种情况怎么解决?

解决方案 »

  1.   

    是出错还是找不到这条记录?Select NVL(gxbj,4) Into v_GXBJ From DJ_JTSJ Where jh=p_JingHao;这样找不到记录的话就给变量v_GXBJ赋了初值4。
      

  2.   

    找不到这条记录
    我先赋了初值v_GXBJ ='否',执行到这一段还是出错.
      

  3.   

    select into 变量 时如果没有符合条件的记录会出错的,可以把语句嵌进块中,用异常捕获
    如:
    begin
       Select gxbj Into v_GXBJ From DJ_JTSJ Where jh=p_JingHao;
       EXCEPTION/*处理异常*/
         WHEN OTHERS THEN
                      null;
    end;
      

  4.   

    begin
    --加入匿名块,进行处理
      begin
       Select gxbj Into v_GXBJ From DJ_JTSJ Where jh=p_JingHao;
       EXCEPTION  WHEN NO_Data_Found THEN
                      v_GXBJ:=4;
      end;
    --你接下来的语句
    end;
      

  5.   

    可以用异常处理
    NO_DATA_FOUND来处理  1  create or replace procedure p_test
      2  as
      3  v_G VARCHAR2(10);
      4  begin
      5  begin
      6  select name into v_G from test where id =1;
      7  exception
      8  when no_data_found then
      9  v_G:='hhh';
     10  end;
     11  dbms_output.put_line(v_G);
     12* END;
    SQL> /过程已创建。SQL> exec p_testPL/SQL 过程已成功完成。SQL> set serveroutput on
    SQL> exec p_test;
    hhhPL/SQL 过程已成功完成。
    不知道这样能否是你想要的亚
      

  6.   

    刚把这个贴子放到我的blog中,竞然出现这样的提示:
    您看到这个页面
    肯定是什么地方出错了
    人难免会犯错
    机器亦然
    如果您没有搞错地址
    多半是现在系统太忙
    稍等片刻再试试