PL / SQL中单个值的智能查询语法

时间:2014-12-01 16:54:57

标签: oracle plsql

我一直试图在PL / SQL中为单个值找到for (<query>) loop <statements> end loop;语法的替代方法。原因是纯粹代码可维护性和可读性的观点之一,即我想要像for (<query>) loop <statements> end loop;那样摆脱声明。

您可以执行以下操作:

declare
   id myTable.id%type:= 4;
   result myTable%rowtype;
begin
   select mt.* into result 
     from myTable mt
     where mt.id = id;

   <do something with result>
end;

但我相信以下方式更清晰,并且希望单个值具有类似功能,NO_DATA_FOUNDTOO_MANY_ROWS上的异常与select into一样{:1}}:

for result in (select * from myTable mt where mt.id = id) loop
  <do something with result>
end loop;

重复一下,重要的部分是可维护性,因此必须声明一个只能在短范围内使用的变量是至关重要的。如果需要closures或其他形式的范围无关紧要,性能无关紧要(最多可达1000左右),代码可读性和可维护性都可以。

我想知道的是,如果你知道一种比你的口味更好或更干净的方法,那么额外检查可能没有数据的for循环(TOO_MANY_ROWS通常可以避免约束,这样可以避免检查)或需要声明变量的select into语句?

0 个答案:

没有答案