可以用ORACLE的异常啊 BEGIN
select a into v_a from tab;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
   ....
END

解决方案 »

  1.   

    用到exception好象还要加上goto吧
      

  2.   

    支持楼上: doulikeme(来去无踪)
      

  3.   

    to ORARichard(没钱的日子......) 我在8i 里面不用goto的 直接在then之后写代码就行了
      

  4.   

    那就要用到嵌套的exception吧
    要不然如果在exception中的语句又出现了异常的话。
      

  5.   

    也就是说要定义一个exception变量
      

  6.   

    呵呵 他是碰到错误不要停下来 THEN 后面可以做些无聊的事情 不会有EXCEPTION就可以了
      

  7.   

    select a into v_a from tab ...
    我是想如果没有数据,自动取变量的初始值就是了。还非要我去先count(*)一把,累不累呀。用exception的话,怎么用呢?没有更简单的,比如用语句设置某个环境变量,它就继续执行????????
      

  8.   

    select a into v_a from tab可能返回多条记录,也会出错.
    那为什么不用油标?
      

  9.   

    那就用select nvl(a,0) into v_a from tab ...
    或者
    select nvl(a,v_a) into v_a from tab ...
      

  10.   

    就这么用啊:
    BEGIN
    select a into v_a from tab;
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
       ....
    END别的方法就不知道了,如果什么错误都不管:BEGIN
    select a into v_a from tab;
    EXCEPTION
       WHEN OTHERS THEN
       ....
    END
      

  11.   

    select nvl(a,0) into v_a from tab ...
    或者
    select nvl(a,v_a) into v_a from tab ...这个也可以,就是你不知道a是不是null,如果选出来是多行的话,还是一样出错的(TOO_MANY_ROWS)。
      

  12.   

    真怪,楼主是想无论是否出错都继续执行吧,怎么大家这么复杂,如下就行了
    BEGIN
      select a into v_a from tab;
    EXCEPTION WHEN OTHERS THEN
      NULL;
    END;
    --就是把异常空处理套在语句外就行了.
      

  13.   

    看来你对oracle的异常不很了解噢,楼上各位的讲解已经很清楚了,不过要提醒你一点,exception用的不好会破坏数据的一致性.
    例如:
    begin
      select .. into .. from ..;
      insert into table1...
    exception when no_data_found then
      null;
    end;insert into table2...如上例,如果你的第二个insert与select 的结果有关,则虽然select执行没有成功,但是insert into table2却执行了,这样有时会导致数据的一致性被破坏,所以使用exception时要注意.
      

  14.   

    select A into B .......
    A 是对象才能有into B这个操作,Max,Min,Count等都会建一个空对象
    这是从数据安全的角度考虑,应该不是'ORACLE弱智' 吧( :