--问题
-- ORA-06502: PL/SQL: 数字或值错误 : character string buffer too small
--ORA-06512: 在 "WMSYS.WM_CONCAT_IMPL", line 30
--错误 WMSYS.WM_CONCAT()
SELECT HEAD.BOOKING_HEAD_ID,
(SELECT REPLACE
(
WMSYS.WM_CONCAT( CONTAINER.CONTAINER_NO --这里改用 F_LINK_LOB(.) 处理
|| '/'
|| SEAL_NO_1
|| '/'
|| CONTAINER_TYPE
|| '/'
|| DECODE (CONTAINER_STATUS_I, 4, 'E', 7, 'L', 'F')),
',',
CHR (10)
)
FROM DOC_BK_CONTAINER CONTAINER
WHERE HEAD.BOOKING_HEAD_ID = CONTAINER.BOOKING_HEAD_ID)
AS CONTAINERS_BOX_INFO
FROM DOC_BOOKING_HEAD HEAD
WHERE HEAD.BOOKING_HEAD_ID = '2c2881d62e50c1c1012e5573b63e54c2'
ORDER BY HEAD.BL_NO;
--方法 F_LINK_LOB
CREATE OR REPLACE FUNCTION F_LINK_LOB (P_STR VARCHAR2)
RETURN CLOB
AGGREGATE USING T_LINK_LOB;
--类型T_LINK_LOB
CREATE OR REPLACE TYPE "T_LINK_LOB"
AS
OBJECT
(
V_LOB CLOB,
STATIC FUNCTION ODCIAGGREGATEINITIALIZE (SCTX IN OUT NOCOPY T_LINK_LOB)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE (SELF IN OUT NOCOPY T_LINK_LOB, VALUE IN VARCHAR2)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE
(
SELF IN T_LINK_LOB,
RETURNVALUE OUT NOCOPY CLOB,
FLAGS IN NUMBER
)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE (SELF IN OUT NOCOPY T_LINK_LOB, CTX2 IN T_LINK_LOB)
RETURN NUMBER
)
CREATE OR REPLACE TYPE BODY T_LINK_LOB
IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE (SCTX IN OUT NOCOPY T_LINK_LOB)
RETURN NUMBER
IS
BEGIN
SCTX := T_LINK_LOB (NULL);
DBMS_LOB.CREATETEMPORARY (SCTX.V_LOB, TRUE, DBMS_LOB.SESSION);
DBMS_LOB.OPEN (SCTX.V_LOB, DBMS_LOB.LOB_READWRITE);
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEITERATE (SELF IN OUT NOCOPY T_LINK_LOB, VALUE IN VARCHAR2)
RETURN NUMBER
IS
BEGIN
DBMS_LOB.WRITEAPPEND (SELF.V_LOB, LENGTH (VALUE) + 1, VALUE || ',');
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE
(
SELF IN T_LINK_LOB,
RETURNVALUE OUT NOCOPY CLOB,
FLAGS IN NUMBER
)
RETURN NUMBER
IS
BEGIN
DBMS_LOB.CREATETEMPORARY (RETURNVALUE, TRUE, DBMS_LOB.CALL);
DBMS_LOB.COPY (RETURNVALUE, SELF.V_LOB, DBMS_LOB.GETLENGTH (SELF.V_LOB) - 1);
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEMERGE (SELF IN OUT NOCOPY T_LINK_LOB, CTX2 IN T_LINK_LOB)
RETURN NUMBER
IS
BEGIN
NULL;
RETURN ODCICONST.SUCCESS;
END;
END;
分享到:
相关推荐
在Oracle数据库中,函数扮演着至关重要的角色,它们允许用户进行复杂的计算、数据处理和信息提取。"Oracle函数大全(CHM格式).rar"这个压缩包显然包含了关于Oracle数据库中各种函数的详细信息,对于学习和查询...
Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...
Oracle函数.chm
Oracle数据库系统提供了丰富的内置函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字...
在Java中调用Oracle函数并处理返回的Oracle特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...
oracle函数大全.chm oracle函数大全.chm
手册中会详细解释每个函数的语法、参数、返回值以及使用示例,帮助用户在实际工作中更高效地处理数据和编写SQL查询。 通过深入阅读"Oracle函数手册",不仅可以了解函数的基本用法,还能学习到如何结合这些函数解决...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以支持复杂的查询和数据操作。这份"oracle函数大全(分类显示).zip"压缩包显然是一份详细的Oracle函数参考手册,对于初学者而言,是一个...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的函数集,以支持复杂的查询和数据处理。在"Oracle函数大全-详细介绍.rar"这个压缩包中,包含了对Oracle数据库中各种函数的详细解析,包括分析函数、...
包含hive和oracle的常用函数对比关系表,可以用于查询hive函数转换成oracle函数,或者oracle函数转换hive函数之间的相互转换。
在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何其他大型文本内容。然而,在处理CLOB...
本文将深入探讨如何在Hibernate中调用Oracle的函数,以实现高效的数据操作。 首先,我们需要理解Hibernate的核心理念,它允许开发者通过面向对象的方式来处理数据库操作,而无需编写大量的SQL语句。Hibernate通过...
### Oracle函数详解 #### 1. ASCII - **功能**:返回指定字符的ASCII值。 - **语法**:ASCII(char) - **示例**: ```sql SQL> SELECT ASCII('A') AS "ASCII Value" FROM DUAL; ASCII Value ----------- 65 ``...
为了更好地管理和处理数据,通常需要在Java程序中调用Oracle数据库中的存储过程或函数。本文将详细介绍如何通过Java来调用Oracle数据库中的函数,并特别关注带有不同类型的输入(in)、输出(out)及输入输出(in/...
Oracle数据库是业界广泛使用的关系型数据库系统,它提供了丰富多样的函数,用于处理数据、执行计算、格式化输出等任务。本知识点集合将详细介绍Oracle数据库中提供的各种函数及其使用方法,从而帮助开发者在进行...
1. **日期和时间函数**:Oracle中的ADD_MONTHS、LAST_DAY、NEXT_DAY等在orafce中都有对应的实现,帮助用户处理日期和时间数据。 2. **字符串函数**:诸如 INITCAP、SUBSTR、INSTR等在PostgreSQL中也有相应的实现,...
2. **迭代函数(ODCIAggregateIterate)**:每当处理一行数据时都会调用此函数。在这个函数中,我们检查`sum_string`是否为空,如果不为空,则将新值附加到现有的字符串后面,并以逗号分隔;如果为空,则直接将新值...
在Oracle中,函数扮演着至关重要的角色,它们用于处理数据、执行计算以及进行各种复杂操作。"ORACLE函数大全.zip"这个压缩包文件很可能包含了对Oracle数据库系统中各种函数的详细说明,包括其属性、用法和功能。下面...
1. **数值函数**:这些函数处理数值数据,如`ABS()`返回绝对值,`ROUND()`进行四舍五入,`MOD()`计算余数,`SQRT()`求平方根等。 2. **字符串函数**:处理字符数据,如`CONCAT()`连接字符串,`SUBSTR()`截取子串,`...