2

我有一个返回 50 个结果的选择查询。选择查询返回 id 。

下一部分我需要运行一个选择查询所有 50 个 id 的值。

请有人告诉我完成它的最佳方法是什么。使用 for 循环是个好主意,例如

begin
declare  @count= select id from table1 
 for 1 to @count ..loop
   select value from table2 where id =1
end loop

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

4

3 回答 3

4

请详细说明此语句“下一部分我需要运行一个选择查询所有 50 个 ID 的值。” 但是,如果您想在 pl/sql 块中获取这 50 条记录并以某种方式操作它们,则需要一个游标。可以使用和不使用 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 的值。

于 2013-09-04T14:04:37.293 回答
3

在您建议的简单情况下,我认为构建值集合然后遍历它们以从第二个表中获取数据是一个坏主意。最好使用 JOIN 来根据您获得的任何标准将两个表中的数据连接在一起。在这种情况下,您似乎从 TABLE1 中选择了一个 ID 值,该值也在 TABLE2 上。因此,您可能会考虑以下内容:

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;

分享和享受。

于 2013-09-05T01:47:14.253 回答
0

下面给出的可能是很好的方式

declare
cursor c1 is select value from table2 where id in (select id from table1)
begin
for i in c1
loop
...
...
end loop;
end;
于 2013-09-04T17:02:15.667 回答