PL/SQL: For loop for select over a list

PL/SQL: For loop for select over a list

我正在尝试使用 PL/SQL 执行以下操作:

  1. 使用查询获取字符串列表
  2. 使用 for 循环以列表作为输入进行查询。

到目前为止我有这个:

DECLARE 
sub2 varchar2(12);

cursor sub is Select ID_SUBLIN from TABLE 1 group by ID_SUBLIN;

BEGIN
for sub2 in sub LOOP
for inner in (select * from TABLE2 where PARAMETER=sub2.ID_SUBLIN )
loop
DBMS_OUTPUT.PUT_LINE( sub2 );
end loop;
end loop;
END;
/

然而它不起作用。我只迭代了 11 个项目列表

提前致谢

你有一些结构问题和错别字。请尝试以下操作:

DECLARE 
-- sub2 varchar2(12);  
--> record_index "sub2" should exist in "for sub2 in sub", not as variable.
  cursor sub is Select ID_SUBLIN from TABLE1 group by ID_SUBLIN;
                                    --TABLE^1 [table name can't contain a space]   
BEGIN
for sub2 in sub 
loop
  for inner in (select * from TABLE2 where PARAMETER=sub2.ID_SUBLIN )
  loop
   dbms_output.put_line( sub2.ID_SUBLIN ); -- must be as <record_index>.<aColumn>
   dbms_output.put_line( inner.parameter );
-- by the way, both of the record_indexes with columns of cursors may be used here.
  end loop;
end loop;
END;
/

在游标中组合 2 个查询然后循环的替代方法。

DECLARE
    sub2   VARCHAR2(12);
cursor sub is 
SELECT id_sublin
FROM TABLE1
JOIN table2 
ON table2.parameter = TABLE1.id_sublin 
group    by    id_sublin;

BEGIN
    FOR sub2 IN sub 
    LOOP
        dbms_output.put_line(sub2.id_sublin);
        EXIT WHEN sub%notfound;
    END LOOP;
END;