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()循环的方法语法。原因是纯粹的代码可维护性和可读性的观点之一,即我想摆脱声明为
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;