建了一个函数,需传进一个自定义类型的参数。编译通过后,执行报错。
函数如下:
CREATE OR REPLACE FUNCTION TESTREF
(
i_ref1 IN VARCHAR2,
i_ref2 IN INT_COLL,--自定义类型,如下
o_ref3 OUT VARCHAR2
)
RETURN PLS_INTEGER IS
BEGIN
o_ref3:='OK';
RETURN 0;
END;
/
自定义类型:
CREATE OR REPLACE TYPE INT_COLL AS TABLE OF INTEGER; 程序执行后,会出ora-06531错误,似乎是不能参照没被初始化的集合。
问题到底在哪里?难道自定义类型还要初始化?请高手指点。
谢谢。
函数如下:
CREATE OR REPLACE FUNCTION TESTREF
(
i_ref1 IN VARCHAR2,
i_ref2 IN INT_COLL,--自定义类型,如下
o_ref3 OUT VARCHAR2
)
RETURN PLS_INTEGER IS
BEGIN
o_ref3:='OK';
RETURN 0;
END;
/
自定义类型:
CREATE OR REPLACE TYPE INT_COLL AS TABLE OF INTEGER; 程序执行后,会出ora-06531错误,似乎是不能参照没被初始化的集合。
问题到底在哪里?难道自定义类型还要初始化?请高手指点。
谢谢。
1.oracle定义全局类型(对象)的语法
CREATE OR REPLACE TYPE TEST.NEWOBJECT1 AS OBJECT
(
NEWATTRIB1 INTEGER
)
2.oracle定义全局数组的的语法
CREATE OR REPLACE TYPE TEST.NEWCOLLECTION2 AS VARRAY (2) OF VARCHAR2(2)例:
CREATE OR REPLACE PACKAGE pkg_TEST
AS
TYPE int_coll IS TABLE OF INTEGER
INDEX BY BINARY_INTEGER;
END TEST;
/
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
FUNCTION testref (i_ref1 IN VARCHAR2, i_ref2 IN int_coll, --自定义类型,如下
o_ref3 OUT VARCHAR2)
RETURN PLS_INTEGER
IS
BEGIN
o_ref3 := 'OK';
RETURN 0;
END;
END pkg_test;
/