CREATE TYPE PERSON IS VARRAY(4) OF VARCHAR2(30);
/CREATE TYPE PERSON_ARRAY IS VARRAY(4) OF PERSON;
/CREATE OR REPLACE PACKAGE BODY TEST
ASFUNCTION MAIN (BODY1 IN VARCHAR2,
BODY2 IN VARCHAR2,
BODY3 IN VARCHAR2)
RETURN PERSON_ARRAY
IS
BEGIN
RETURN PERSON_ARRAY(PERSON(BODY1, BODY1, BODY1, to_char(sysdate)), PERSON(BODY2, BODY2, to_char(sysdate), BODY2), PERSON(BODY3, to_char(sysdate), BODY3, BODY3), PERSON(to_char(sysdate), BODY1, BODY1, BODY1));
END MAIN;
END TEST;
/实行后就报错
/CREATE TYPE PERSON_ARRAY IS VARRAY(4) OF PERSON;
/CREATE OR REPLACE PACKAGE BODY TEST
ASFUNCTION MAIN (BODY1 IN VARCHAR2,
BODY2 IN VARCHAR2,
BODY3 IN VARCHAR2)
RETURN PERSON_ARRAY
IS
BEGIN
RETURN PERSON_ARRAY(PERSON(BODY1, BODY1, BODY1, to_char(sysdate)), PERSON(BODY2, BODY2, to_char(sysdate), BODY2), PERSON(BODY3, to_char(sysdate), BODY3, BODY3), PERSON(to_char(sysdate), BODY1, BODY1, BODY1));
END MAIN;
END TEST;
/实行后就报错
-- 楼主是不是没有定义包头,或包头写有的问题
-- 这是你的代码,我简单的改了改,你参考一下,有问题可以@我SQL> CREATE TYPE PERSON IS VARRAY(4) OF VARCHAR2(30);
2 /
Type created
SQL> CREATE TYPE PERSON_ARRAY IS VARRAY(4) OF PERSON;
2 /
Type created
SQL> CREATE OR REPLACE PACKAGE TEST
2 AS
3 FUNCTION MAIN (BODY1 IN VARCHAR2,
4 BODY2 IN VARCHAR2,
5 BODY3 IN VARCHAR2)
6 RETURN PERSON_ARRAY;
7 END TEST;
8 /
Package created
SQL> CREATE OR REPLACE PACKAGE BODY TEST
2 AS
3 FUNCTION MAIN (BODY1 IN VARCHAR2,
4 BODY2 IN VARCHAR2,
5 BODY3 IN VARCHAR2)
6 RETURN PERSON_ARRAY
7 IS
8 BEGIN
9 RETURN PERSON_ARRAY(
10 PERSON(BODY1, BODY1, BODY1, to_char(sysdate)),
11 PERSON(BODY2, BODY2, to_char(sysdate), BODY2),
12 PERSON(BODY3, to_char(sysdate), BODY3, BODY3),
13 PERSON(to_char(sysdate), BODY1, BODY1, BODY1)
14 );
15 END MAIN;
16 END TEST;
17 /
Package body created
SQL> select test.main(1,2,3) from dual ;
TEST.MAIN(1,2,3)
----------------
<Object>
SQL> drop package TEST;
Package dropped
SQL> drop type PERSON_ARRAY ;
Type dropped
SQL> drop type person;
Type droppedSQL>