select count(*) into v_i from table_name where cond1=0 and rownum<=1;
if v_i<1 then
  ...
end if;

解决方案 »

  1.   

    既然你是不管条件如何变,都是从那个表里面得到name,
    select name into p_name from table_name where (cond1 or cond2 or cond3... ) and  rownum<=1;
      

  2.   

    不是这样,是优先选择符合条件1的记录,若没有则选择符合条件2的记录,...以此类推,谢谢 jiezhi(西域浪子)
      

  3.   

    就是说,我条件1没有满足的记录时,我要继续查询条件2,...条件3等等,而不是得到no_data_found
      

  4.   

    我觉得也没有什么好办法,因为select into 语句当没有记录时会触发异常,而不是忘下执行的。
      

  5.   

    create or replace procedure get_name(p_name out varchar)
    as 
    beign
    begin
      select name into p_name from table_name where cond1=0 and   rownum<=1;
    exception
      when no_data_found then 
        beign
              select name into p_name from table_name where  条件2
        exception
          when no_data_founs then 
            .......
        end; 
      end ; 
    end;
      

  6.   

    你可以创建一个游标CREATE OR REPLADE GET_NAMES (P_NAME OUT VARCHAR2)
    AS 
      CURSOR c1 IS SELECT NAME FROM TABLE_NAME WHERE COUND1=0 AND ROWNUM<=1;
    BEGIN
      OPEN C1;
      LOOP
      EXIT WHEN C1%NOTFOUND;
      SELECT NAME INTO P_NAME FROM TABLE_NAME WHERE COUND1=0 AND ROWNUM<=1;
      CLOSE C1;
      IF P_NAME='' THEN
      SELECT NAME INTO P_NAME WHERE 其他条件;
      END IF;
    END GET_NAMES;
      

  7.   

    如果这样可以等同以下效果:
    create or replace procedure get_name(p_name out varchar)
    as begin
      select name into p_name from table_name where cond1=0 and   rownum<=1;
    if p_name is null then
      select name into p_name from table_name where  条件2;
    elsif p_name is null then
      ..........
    else
       ......
    end if;
    end;
    /