CREATE TYPE coords AS OBJECT(
x NUMBER,
y NUMBER
);
create table coordstab of coords;
insert into coordstab values(1,2);
insert into coordstab values(3,4);DECLARE
TYPE coordstabtype IS TABLE OF coords;
pairs coordstabtype;
BEGIN
SELECT *
BULK COLLECT INTO pairs
FROM coordstab;
END;为什么提示没有足够的值呢
TYPE coordstabtype IS TABLE OF coords INDEX BY PLS_INTEGER;
CREATE TYPE coords AS OBJECT(
x NUMBER,
y NUMBER
);
create table coordstab of coords;
insert into coordstab values(1,2);
insert into coordstab values(3,4);DECLARE
TYPE coordstabtype IS TABLE OF coords;
pairs coordstabtype; --这里得到的是一个对象数组。
BEGIN
SELECT coords(x,y) --由于上面得到的是一个对象数组,要利用该对象类型的构造函数转换一下。
BULK COLLECT INTO pairs
FROM coordstab;
END;--下面是修改后的结果:
[TEST@ora10gr1#2009-12-27/22:20:58] SQL>set serveroutput on
[TEST@ora10gr1#2009-12-27/22:20:58] SQL>DECLARE
2 TYPE coordstabtype IS TABLE OF coords;
3 pairs coordstabtype;
4 BEGIN
5 SELECT coords(x,y)
6 BULK COLLECT INTO pairs
7 FROM coordstab;
8 for i in pairs.first..pairs.count loop
9 dbms_output.put_line(pairs(i).x||pairs(i).y);
10 end loop;
11 END;
12 /
12
34PL/SQL procedure successfully completed.