在PLSQL中循环处理多个结果

在PLSQL中循环处理多个结果,plsql,plsqldeveloper,Plsql,Plsqldeveloper,我有一个select查询,返回50个结果。select查询返回id 下一部分我需要运行一个select查询,它为所有50个ID指定一个值 请有人告诉我做这件事最好的方法是什么。 使用for循环是个好主意吗 e、 g 我可以使用游标吗最好的方法是什么。请详细说明以下语句“下一部分我需要运行一个select查询,该查询为所有50个ID的值。” 但是,如果您想在pl/sql块中获取这50条记录并以某种方式对其进行操作,则需要一个游标。可以使用FOR循环和不使用FOR循环从游标中获取记录 光标示例: d

我有一个select查询,返回50个结果。select查询返回id

下一部分我需要运行一个select查询,它为所有50个ID指定一个值

请有人告诉我做这件事最好的方法是什么。 使用for循环是个好主意吗 e、 g


我可以使用游标吗最好的方法是什么。

请详细说明以下语句“下一部分我需要运行一个select查询,该查询为所有50个ID的值。” 但是,如果您想在pl/sql块中获取这50条记录并以某种方式对其进行操作,则需要一个游标。可以使用FOR循环和不使用FOR循环从游标中获取记录

光标示例:

declare
 cursor c1 is select col1 from table1;
begin
 for a in c1
  loop
   dbms_output.put_line(a.col1);
  end loop;
end;

当服务器输出打开时,上面的代码将显示col1中的值。

下面给出的是一种很好的方法

declare
cursor c1 is select value from table2 where id in (select id from table1)
begin
for i in c1
loop
...
...
end loop;
end;

在一个简单的例子中,如您所建议的,我认为建立一个值集合,然后遍历它们以从第二个表中获取数据是一个坏主意。更好的方法是使用连接,根据您得到的任何条件,将两个表中的数据连接在一起。在这种情况下,您似乎正在从表1中选择一个ID值,该值也在表2中。因此,你可以考虑如下的事情:

FOR myRow IN (SELECT t1.ID, t2.VALUE
                FROM TABLE1 t1
                INNER JOIN TABLE2 t2
                  ON (t2.ID = t1.ID))
LOOP
  -- Do something useful with the data

  DBMS_OUTPUT.PUT_LINE('t1.ID=' || myRow.ID || '  t2.VALUE=' || t2.VALUE);
END LOOP;

分享和享受。

我没有使用游标。你能举一个使用游标完成任务的例子吗?我编辑了我的答案,请检查。一般来说,最好的选择是使用纯SQL。您的问题描述听起来像是SQL解决方案是可能的,但由于您没有提供有关问题的详细信息,因此很难给出准确的答案。
FOR myRow IN (SELECT t1.ID, t2.VALUE
                FROM TABLE1 t1
                INNER JOIN TABLE2 t2
                  ON (t2.ID = t1.ID))
LOOP
  -- Do something useful with the data

  DBMS_OUTPUT.PUT_LINE('t1.ID=' || myRow.ID || '  t2.VALUE=' || t2.VALUE);
END LOOP;