您的位置: 首页 计算机类> Oracle认证> 应用技术
Oracle认证应用技术,oracle dba认证,oracle题库,oracle考试试题
公务员考试辅导课程

Oracle9i的1467错误解决方法

发布时间:11-09

页 数:4页

上一篇:细化解析:教你轻松掌握Oracle内存结构

下一篇:oms实现Oracle的数据备份方法



在使用自定义聚集函数时出现了一个ORA-1467错误。 


根据Oracle文档上的描述,1467错误是由于排序的键值超过了DB_BLOCK_SIZE。 
但是出现错误的SQL似乎并不满足这个条件。下面简单构造这个错误: 
SQL> CREATE OR REPLACE TYPE T_LINK AS OBJECT (  
2 STR VARCHAR2(30000),  
3 STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER,  
4 MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER,  
5 MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER,  
6 MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER  
7 ) 
8 / 
Type created. 
SQL> CREATE OR REPLACE TYPE BODY T_LINK IS  
2 STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER IS  
3 BEGIN  
4 SCTX := T_LINK(NULL);  
5 RETURN ODCICONST.SUCCESS;  
6 END;  
7  
8 MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER IS  
9 BEGIN  
10 SELF.STR := SELF.STR || VALUE || ’,’;  
11 RETURN ODCICONST.SUCCESS;  
12 END;  
13  
14 MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER IS  
15 BEGIN  
16 RETURNVALUE := SUBSTR(SELF.STR, 1, LENGTH(SELF.STR) - 1);  
17 RETURN ODCICONST.SUCCESS; 
18 END;  
19  
20 MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER IS  
21 BEGIN  
22 NULL; 
23 RETURN ODCICONST.SUCCESS; 
24 END; 
25 END; 
26 / 
Type body created. 
SQL> CREATE OR REPLACE FUNCTION F_LINK(P_STR VARCHAR2) RETURN VARCHAR2  
2 AGGREGATE USING T_LINK;  
3 / 
Function created. 
首先是构造自定义聚集函数,关于这个函数的详细说明,可以参考:http://yangtingkun.itpub.net/post/468/3380 

Google
 


     

考试信息

热点

课程

更新

©2005-2006 100ksw.com 版权所有 皖ICP备06013378号