任何人都可以识别以下代码的错误。特别是第一个dbms_output行。第二个打印很好。但第一个给出了这个错误:
第2行出错 ORA-06550:第15行,第53栏: PLS-00201:标识符' MYCOLL'必须申报 ORA-06550:第15行第1栏: PL / SQL:忽略语句
DECLARE
CURSOR c1
IS
SELECT sub_provider_address_id sub_id, phone, extension
FROM sub_provider_address;
TYPE coll_type IS TABLE OF c1%ROWTYPE;
my_coll coll_type;
BEGIN
OPEN c1;
FETCH c1
BULK COLLECT INTO my_coll;
dbms_output.put_line(' my_coll first row id has '|| mycoll(1).phone );
dbms_output.put_line(' my_coll now has '|| my_coll.last );
END;
答案 0 :(得分:1)
您将变量声明为my_coll
:
my_coll coll_type;
如果发生了错误,那么您将其称为mycoll
:
dbms_output.put_line(' my_coll first row id has '|| mycoll(1).phone );
所以你只是缺少一个下划线,它应该是:
dbms_output.put_line(' my_coll first row id has '|| my_coll(1).phone );
答案 1 :(得分:0)
您的coll_type
不是关联的数组类型。
你必须使用这样的东西:
TYPE coll_type IS TABLE OF c1%ROWTYPE index by pls_integer;
以此为例:
declare
cursor c1 is
select 1 id from dual
;
type coll_type is table of c1%ROWTYPE index by pls_integer;
l_coll_type coll_type;
begin
open c1;
fetch c1 bulk collect into l_coll_type;
close c1;
dbms_output.put_line('Output:' || l_coll_type(1).id);
end;
Output:1