`
desert3
  • 浏览: 2159413 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

使用to_char(wm_concat(item))的时候报ORA-64203错误

阅读更多
使用to_char(wm_concat(item))的时候报ORA-64203错误
出错原因:由于concat的item项目太多,导致合成后的字符串长度超出数据库char字段的缓冲区限制

通过DBMS_LOB.SUBSTR把wm_concat(item)分成10块,取到后再拼接起来
DBMS_LOB.SUBSTR(wm_concat(item),1000,1),
DBMS_LOB.SUBSTR(wm_concat(item),1000,1001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,2001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,3001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,4001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,5001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,6001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,7001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,8001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,9001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,10001)

或者直接在oracle中用||连接起来,直接返回
DBMS_LOB.SUBSTR(wm_concat(item),1000,1) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,1001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,2001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,3001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,4001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,5001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,6001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,7001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,8001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,9001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,10001)

参考oracle官网http://download.oracle.com/docs/cd/E11882_01/server.112/e17766/e60000.htm
ORA-64203: Destination buffer too small to hold CLOB data after character set conversion.
    Cause: An attempt was made to convert CLOB to CHAR, where the LOB size was bigger than the buffer limit for CHAR types or the CHAR buffer was not big enough to hold all data after character set conversion.
    Action: Do one of the following:

    * Make the LOB smaller before performing the conversion. for example, by using SUBSTR on CLOB

    * Use DBMS_LOB.SUBSTR to convert CLOB to CHAR.


DBMS_LOB.SUBSTR函数参考:
This function returns amount bytes or characters of a LOB, starting from an absolute offset from the beginning of the LOB.

lob_loc:Locator for the LOB to be read. 
amount:Number of bytes (for BLOBs) or characters (for CLOBs) to be read. 
offset:Offset in bytes (for BLOBs) or characters (for CLOBs) from the start of the LOB (origin: 1). 

http://www.cs.umbc.edu/portal/help/oracle8/server.815/a68001/dbms_lob.htm#1009072
分享到:
评论

相关推荐

    ORA-00904: "WM_CONCAT": 标识符无效

    在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但系统无法识别该函数,提示其为无效的标识符。WM_CONCAT是Oracle 10g及更早版本中用于字符串合并的...

    ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案

    当尝试在Oracle 11gR2或更高版本中使用WMSYS.WM_CONCAT时,会出现ORA-00904错误,因为这个函数不再可用。这可能是由于以下几个原因: 1. **数据库版本升级**:从旧版本升级到11gR2或更高版本后,WM_CONCAT不再受支持...

    ORA-06512 数字或值错误,字符缓冲区太小

    ### ORA-06512 数字或值错误,字符缓冲区太小 #### 背景介绍 在Oracle数据库应用开发过程中,经常会遇到处理大量字符数据的情况。Oracle提供了多种数据类型来存储不同长度的字符串,其中`VARCHAR2`是用于存储变长...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数

    解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...

    BLOG_Oracle_wm_concat包的订制.pdf

    当系统升级到12C及以上版本,如果代码中仍然依赖`WM_CONCAT`,那么将无法正常运行,并可能抛出`ORA-00904: "wm_concat":invalid identifier`的错误。 为了解决这个问题,有两种常见的解决方案: 1. **利用系统包...

    wm_concat函数所需资源包

    标题中的"wm_concat函数所需资源包"是指解决`WM_CONCAT()`在新版本Oracle中无法使用的问题的相关资源集合。 描述中提到的链接指向了一篇CSDN博客文章,该文章提供了详细的解决方案。在这里,我们将深入探讨`WM_...

    ora-dba.rar

    "ora-dba.rar" 是一个专门针对Oracle数据库管理的实用工具集合,对于数据库开发者和管理员而言,它提供了全面的功能,极大地简化了日常的数据库管理和优化任务。这个工具集的使用不仅可以提升工作效率,还能帮助DBA...

    wmsys_wm_concat函数结果拆解

    根据给定文件的信息,本文将深入探讨“wmsys_wm_concat函数结果拆解”的相关知识点,包括该函数的基本概念、应用场景以及SQL示例代码的详细解析。 ### wmsys_wm_concat函数简介 在Oracle数据库中,`wmsys.wm_...

    Oracle10g自定义聚合函数(字符串拼接)

    * 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000') * 由于聚合函数只支持一个参数,这里使用对象类型实现传入多个参数 * Oracle11g Release2版本引入了...

    Oracle新版中不支持 WM_CONCAT的处理方法

    Oracle新版中不支持 WM_CONCAT的处理方法,直接创建一个自定义函数代替

    WMSYS.zip解决ORA-00904:

    -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...

    oracle wm_concat 列转行 逗号分隔

    本文将深入探讨如何使用`wm_concat`函数来实现列转行,特别是以逗号分隔的方式。 `wm_concat`是一个非标准的Oracle函数,它在早期版本的Oracle(如9i和10g)中被广泛使用,用于将相同分组内的多个值连接成一个字符...

    wm_concat函数DDL.zip

    这意味着在12C及更高版本中,如果还想使用`wm_concat`功能,就需要我们自己创建这个函数。下面,我们将详细介绍如何自定义`wm_concat`函数,并探讨其工作原理以及替代方案。 首先,`wm_concat`函数的原意是返回一个...

    wmsys_wm_concat的几个用法

    wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法

    wmsys.wm_concat详细示例.txt

    根据给定文件的信息,我们可以深入探讨`wmsys.wm_concat`的使用方法及其在不同SQL语句中的应用。 ### 基础用法 `wmsys.wm_concat`函数的基本语法如下: ```sql wmsys.wm_concat(column1, column2, ..., columnN) ...

    oracle替换wm_concat varchar处理为clob处理的方法

    是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备

    oracle 创建wm_concat函数

    创建一个名为`wm_concat`的函数,它使用上面定义的类型`string_sum_obj`作为聚合函数的基础。 ```sql CREATE OR REPLACE FUNCTION wm_concat(value VARCHAR2) RETURN VARCHAR2 PARALLEL_ENABLE AGGREGATE USING ...

    Python库 | flake8_no_implicit_concat-0.1.4-py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:flake8_no_implicit_concat-0.1.4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    WM_CONCAT.zip

    在处理`ORA-00904: "WM_CONCAT"`错误时,可以考虑升级代码以使用`LISTAGG`,或者如果无法修改现有代码,可以使用第三方提供的解决方案,如OWM的PL/SQL包。但无论哪种方式,都需确保操作的安全性和合规性。

Global site tag (gtag.js) - Google Analytics