在PLSQL中循环处理多个结果
我有一个select查询,返回50个结果。select查询返回id 下一部分我需要运行一个select查询,它为所有50个ID指定一个值 请有人告诉我做这件事最好的方法是什么。 使用for循环是个好主意吗 e、 g在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个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;