PL/SQL 集合类型
--创建一个类型
CREATE OR REPLACE TYPE Project IS OBJECT (
project_no NUMBER(2),
title VARCHAR2(35),
cost NUMBER(7,2))
--创建一个集合
CREATE OR REPLACE TYPE ProjectList is table of Project
-- Created on 2011-10-11 by HUCHANGKUN
declare
-- Local variables here
i integer;
V_LIST projectlist := projectlist();
V_PRO project :=project(NULL,NULL,NULL);
begin
--为集合增加元素
FOR I IN 1 ..4 LOOP
V_PRO.project_no := I;
V_PRO.title := I||' TITLE';
V_PRO.cost := I;
V_LIST.EXTEND;
V_LIST(V_LIST.COUNT):=V_PRO;
END LOOP;
--从集合中取元素
DBMS_OUTPUT.put_line(V_LIST.COUNT);
DBMS_OUTPUT.put_line(V_LIST(V_LIST.FIRST).project_no);
DBMS_OUTPUT.put_line(V_LIST(V_LIST.LAST).project_no);
end;
--注意project(I,I||' TITLE',I);
-- Created on 2011-10-11 by HUCHANGKUN
declare
-- Local variables here
i integer;
V_LIST projectlist := projectlist();
--V_PRO project :=project(NULL,NULL,NULL);
begin
-- Test statements here
FOR I IN 1 .. 8 LOOP
--V_PRO.project_no := I;
--V_PRO.title := I||' TITLE';
--V_PRO.cost := I;
V_LIST.EXTEND;
V_LIST(V_LIST.COUNT) := project(I,I||' TITLE',I);
END LOOP;
DBMS_OUTPUT.put_line(V_LIST.COUNT);
DBMS_OUTPUT.put_line(V_LIST(V_LIST.FIRST).project_no);
DBMS_OUTPUT.put_line(V_LIST(V_LIST.LAST).project_no);
end;
【注意】
create type zjj as object (n number);
这个可以建立一个数据的类型对象,以后可以在其他地方引用,
而type zjj is record仅仅是声明一种类型,只能在存储过程里面使用
create table zjj1 of zjj 这个用法是有的