根据一定的条件查询某表时,有时获取到多条记录,有时获取到1条记录,如果是多条记录,我想任取一条记录;
这样的功能要放在函数里实现,请问,该怎么实现?
select name
    into v_name
    from xxx_yyy
    where p_parm1=parm1
      and p_parm2=parm2
      and p_parm3=parm3
      and p_parm4=parm4;
如果直接这样子的话,则当多条记录时,执行报错!

解决方案 »

  1.   

    select name 
        into v_name 
    (select name    
    from xxx_yyy 
        where p_parm1=parm1 
          and p_parm2=parm2 
          and p_parm3=parm3 
          and p_parm4=parm4
    order by dbms_random.value
    )       
    where rownum<2;
      

  2.   


    如果从第一条去的话,是不是可以不用orderby dbms_random.value?
      

  3.   

    orderby dbms_random.value是为了随机取记录,如果没有这要求,当然可以不用。
      

  4.   

    select name 
        into v_name 
        from xxx_yyy 
        where p_parm1=parm1 
          and p_parm2=parm2 
          and p_parm3=parm3 
          and p_parm4=parm4
        where rownum=1;