错误码:-5015
错误内容:CLASS类型被引用
错误级别: ERROR
原因:要修改的对象引用导致无法修改
CREATE OR REPLACE TYPE hs_cop_concat
AUTHID CURRENT_USER AS OBJECT
(
CURR_STR VARCHAR2(4000),
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT hs_cop_concat) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT hs_cop_concat,
sField IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN hs_cop_concat,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT hs_cop_concat,
SCTX2 IN hs_cop_concat) RETURN NUMBER
)
/
CREATE OR REPLACE TYPE BODY hs_cop_concat
IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT hs_cop_concat)
RETURN NUMBER
IS
BEGIN
SCTX := hs_cop_concat(NULL) ;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT hs_cop_concat,
sField IN VARCHAR2)
RETURN NUMBER
IS
BEGIN
IF(CURR_STR IS NOT NULL) THEN
CURR_STR := CURR_STR || ',' || sField;
ELSE
CURR_STR := sField;
END IF;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN hs_cop_concat,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURNVALUE := CURR_STR ;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT hs_cop_concat,
SCTX2 IN hs_cop_concat)
RETURN NUMBER
IS
BEGIN
IF(SCTX2.CURR_STR IS NOT NULL) THEN
SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ;
END IF;
RETURN ODCICONST.SUCCESS;
END;
END;
/
CREATE OR REPLACE FUNCTION sf_cop_concat(sField VARCHAR2)
RETURN VARCHAR2 AGGREGATE USING hs_cop_concat ;
/
2、修改自定义对象的类型
CREATE OR REPLACE TYPE hs_cop_concat
AUTHID CURRENT_USER AS OBJECT
(
CURR_STR VARCHAR2(1000),
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT hs_cop_concat) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT hs_cop_concat,
sField IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN hs_cop_concat,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT hs_cop_concat,
SCTX2 IN hs_cop_concat) RETURN NUMBER
)
执行失败(语句1)
-5015: CLASS类型被引用
解决方法
1、删除自定义对象,重新创建
drop type hs_cop_concat cascade;
CREATE OR REPLACE TYPE hs_cop_concat
AUTHID CURRENT_USER AS OBJECT
(
CURR_STR VARCHAR2(1000),
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT hs_cop_concat) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT hs_cop_concat,
sField IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN hs_cop_concat,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT hs_cop_concat,
SCTX2 IN hs_cop_concat) RETURN NUMBER
)
文章
阅读量
获赞