我对表类型
有以下定义create table number_table as table of number;
我想在下面的例子中使用它。
declare
l_myTable number_table := number_table(1, 2, 3);
begin
for i in (select * from l_myTable) loop
dbms_output.put_line(i.???); -- how do I reference the numbers here?
end loop;
end;
原谅我的代码有点无意义,我如何引用i.???
来获取迭代器中的数字?
答案 0 :(得分:1)
稍微将您的查询更改为
select rownum, column_value from l_myTable
然后使用dbms_output.put_line(i.rownum);
作为索引,dbms_output.put_line(i.column_value );
作为值
答案 1 :(得分:0)
create type number_table as table of number;
/
您不需要使用Cursor FOR LOOP,因为您可以遍历集合:
declare
l_myTable number_table := number_table(3, 2, 1);
begin
for i in 1 .. l_myTable.COUNT loop
dbms_output.put_line( l_myTable(i) );
end loop;
end;
/
但是,如果有一些原因需要使用游标,那么您可以使用ROWNUM
pseudocolumn来获取集合中的索引,并使用COLUMN_VALUE
pseudocolumn来获取集合中该索引的值使用查询:
SELECT ROWNUM, COLUMN_VALUE FROM TABLE( l_myTable )
像这样:
declare
l_myTable number_table := number_table(3, 2, 1);
begin
for i in ( SELECT ROWNUM, COLUMN_VALUE FROM TABLE( l_myTable ) ) loop
dbms_output.put_line( i.rownum || ': ' || i.column_value ); -- how do I reference the numbers here?
end loop;
end;
/