create or replace spbegin
    select no,name from emp;    if 检索到记录 then (如果写??????)
       ........
    end if
end spselect no,name from emp;只是一个SELECT语句,不是游标!
先谢谢了!

解决方案 »

  1.   

    是我没说明白吗?
    在SP中,执行select no,name from emp;后,
    如何判断是有检索到记录?
      

  2.   

    在过程中可以用异常来判断是否为NULL。也可以select count(*)来判断,如果count(*)<1就为空了。
      

  3.   

    不想执行两次SELECT语句,
    慢!
      

  4.   

    if exists(select * from emp ) then ...
      

  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.   

    先定义一个变量,然后select count(*) into para1 from table;if para1>1 then
      

  7.   

    其实 在存储里面使用 select into 时,如果没有得到数据时会触发 异常错误。
    想控制这一点 只要用 
      begin
        select no,name into value1,value2 from emp;
      exception
        when others then
          ........
      end;将 select into 给括上就可以了。还有就是可以考虑用cursor ,用cursor%notfound可以处理。
      

  8.   

    错了是NO_DATA_FOUND
    update是用SQL%ROWCOUNT 
      

  9.   

    出现异常了,怎么还能捕捉到sql%count ???
      

  10.   

    看一下隐式游标的使用
    隐式游标SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三个属性