暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 插入一串长字符的问题

askTom 2018-06-18
497

问题描述

你好,团队,


我试图将选择另一个表的行的结果插入到表 “TEST COM” 中。
我使用了wm_concat函数。


/**********/

插入COMMENTAIRE_TEST (选择wm_concat((DBMS_LOB.SUBSTR(COM_TEXTE,4000,1) 作为测试
来自评论
-其中COM_NUMREF = 1416
按COM_NUMREF分组)

/************/

执行查询时,出现以下错误

/*
融洽的关系-
Erreur SQL : ORA-22835: 棉塞在原始血块中的转换 (r é elle: 46972,最大值: 4000)
22835. 00000-“缓冲区太小,无法CHAR或BLOB转换为RAW (实际: % s,最大值: % s)”
* 原因: 试图将CLOB转换为CHAR或BLOB转换为RAW,其中
LOB大小大于CHAR和RAW的缓冲区限制
类型。
请注意,如果字符长度,宽度以字符为
语义对列有效,否则宽度为
以字节为单位报告。
* 操作: 执行以下操作之一
1.在执行转换之前使LOB变小,
例如,通过在CLOB上使用SUBSTR
2.使用DBMS_LOB.SUBSTR将CLOB转换为CHAR或BLOB转换为RAW
/*****

我需要你的帮助,请 :)

提前谢谢

专家解答

wm_concat不再受支持,因此无论如何都可能是时候摆脱它了。

我们确实有LISTAGG函数,但目前有相同的限制,即,它返回一个varchar2而不是clob。

一种解决方法是使用XMLAGG函数进行串联,例如

SQL> select rtrim(xmlagg(xmlelement(e,object_name,',').extract('//text()') order by object_name).GetClobVal(),',')
  2  from   dba_objects
  3  where  owner = 'SCOTT';

RTRIM(XMLAGG(XMLELEMENT(E,OBJECT_NAME,',').EXTRACT('//TEXT()')ORDERBYOBJECT_NAME
--------------------------------------------------------------------------------
BONUS,CLONE_TAB,CUSTOMERS,DEPT,DEPT_PK,EMP,EVALUATE_STUFF,MY_NUM_LIST,MY_PROC,MY...


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论