Oracle PL/SQL中单个值的智能查询语法
我一直在试图找到一种替代Oracle PL/SQL中单个值的智能查询语法,oracle,plsql,Oracle,Plsql,我一直在试图找到一种替代for()循环的方法语法。原因是纯粹的代码可维护性和可读性的观点之一,即我想摆脱声明为for()循环结束循环可以 您可以执行以下操作: declare id myTable.id%type:= 4; result myTable%rowtype; begin select mt.* into result from myTable mt where mt.id = id; <do something with resu
for()循环的方法用于单个值的PL/SQL中的代码>语法。原因是纯粹的代码可维护性和可读性的观点之一,即我想摆脱声明为for()循环结束循环代码>可以
您可以执行以下操作:
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;
我再说一遍,重要的部分是可维护性,因此避免声明可能只在短范围内使用的变量是至关重要的。如果需要闭包
或其他形式的作用域并不重要,那么性能也不重要(大约1000倍),代码可读性和可维护性也不重要
我想知道的是,您是否知道一种比for循环更好或更干净的方法,该方法对可能的无数据进行额外检查(过多行
通常通过约束来避免检查)或者需要声明变量的select into
语句?我不确定这里是否有问题。您是否在询问选择进入
语法是否提高了可维护性?您是否在问是否有第三种方法比您提供的两种方法都好?如果要避免声明局部变量result
,您将如何引用
块中返回的值(我猜是多个语句)?我们是否可以建议将select
语句重构为下面调用(可能多次)的函数?@JustinCave抱歉,如果我不清楚,我将进行编辑。我要问的基本上是,是否有语法或其他结构允许我使用更严格的语法,比如带有查询的for循环,它与选择进入一样工作?PL/SQL是一个错误。。。一种有点过时且冗长的语言。在这里,限制变量作用域的最佳方法是使用嵌套的匿名块和函数。
for result in (select * from myTable mt where mt.id = id) loop
<do something with result>
end loop;