当前位置:  开发笔记 > 数据库 > 正文

合理的SELECT ... INTO Oracle解决方案,适用于多个OR无行的情况

如何解决《合理的SELECTINTOOracle解决方案,适用于多个OR无行的情况》经验,为你挑选了1个好方法。

我只想从过程内部将值SELECT值转换为变量.

SELECT blah1,blah2 INTO var1_,var2_ FROM ...

有时,大型复杂查询将没有行,有时它会有多个 - 两种情况都会导致异常.我希望用类似于以下内容的隐式行为替换异常行为:

没有行=没有值更改,多行=使用最后一行

对于"多行"情况,我可以很容易地约束结果集,但对于不能在SELECT中使用聚合函数的情况,"无行"会更加困难.

有什么特别的解决方法或建议吗?在执行SELECT INTO之前,希望避免显着重写查询或执行两次以获取行数.



1> Matthew Wats..:

使用异常块有什么问题?

  create or replace
procedure p(v_job VARCHAR2) IS
 v_ename VARCHAR2(255);
begin

 select ename into v_ename 
 from (
  select ename
  from scott.emp 
  where job = v_job
  order by v_ename desc )
 where rownum = 1;

 DBMS_OUTPUT.PUT_LINE('Found Rows Logic Here -> Found ' || v_ename);
 EXCEPTION WHEN NO_DATA_FOUND THEN
  DBMS_OUTPUT.PUT_LINE('No Rows found logic here');

end;


SQL>  begin
   p('FOO');
   p('CLERK');
  end;  2    3    4  
  5  /
No Rows found logic here
Found Rows Logic Here -> Found SMITH


PL/SQL procedure successfully completed.

SQL> 

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有