create or replace function aa(name1 in varchar2) return number
 is
aa1 varchar2(4);
begin--增加下面的语句
whenever not found continue;select c1 into aa1 from tt_3 where c1=name1;
if sql%notfound then
return 2;
else
return 3;
end if;
end;

解决方案 »

  1.   

    SQL> CREATE OR REPLACE PROCEDURE P_DEMO AS
      2  C NUMBER;
      3  BEGIN
      4  SELECT 2 INTO C FROM EMP WHERE 1=2;
      5  EXCEPTION WHEN NO_DATA_FOUND THEN 
      6    DBMS_OUTPUT.PUT_LINE('NO DATA');
      7  END;
      8  /Procedure created.SQL> SET SERVEROUTPUT ON;
    SQL> EXEC P_DEMO;
    NO DATAPL/SQL procedure successfully completed.SQL>
      

  2.   

    : bzszp(www.bzszp.533.net) 
    你这样做有问题吧,我现在通过一系列的判断后,还要删除数据,最后如果删除不成功还要exception,这样不是报错吗,会说要转到exception中我现在只有count一下,如果是0就表示没有,是大于0表示有了
      

  3.   

    奥,实在不行用游标判断一下吧
    SQL> CREATE OR REPLACE PROCEDURE P_DEMO AS
      2  C NUMBER;
      3  CURSOR C_TEMP IS SELECT 2 FROM EMP WHERE 1=2;
      4  BEGIN
      5  OPEN C_TEMP;
      6  FETCH C_TEMP INTO C;
      7  IF C_TEMP%NOTFOUND THEN
      8  DBMS_OUTPUT.PUT_LINE('NO DATA');
      9  ELSE 
     10  DBMS_OUTPUT.PUT_LINE('SELECTED DATA');
     11  END IF;
     12  END;
     13  /Procedure created.SQL> EXEC P_DEMO;
    NO DATAPL/SQL procedure successfully completed.SQL>
      

  4.   

    create or replace function aa(name1 in varchar2) 
    return number
    is
    aa1 varchar2(4);
    begin
    update test set name1=name1 where name=name1;
    if sql%notfound then
    return 2;
    else
    return 3;
    end if;
    end;
    /