ORA-01489:Oracle Database 11g企业版11.2.0.4.0版中的字符串连接结果太长 - 64位生产

时间:2016-05-17 07:06:11

标签: oracle plsql oracle11g

我在Oracle Database 11g企业版11.2.0.4.0版中运行此查询 - 64位生产,PL / SQL版本11.2.0.4.0 - 生产,CORE 11.2.0.4.0生产,适用于Linux的TNS:版本11.2.0.4.0 - 生产,NLSRTL版本11.2.0.4.0 - 生产

ORA-01489: result of string concatenation is too long
01489. 00000 -  "result of string concatenation is too long"
*Cause:    String concatenation result is more than the maximum size.
*Action:   Make sure that the result is less than the maximum size.

但我有这个错误:

SET LONG 2000000
SET pagesize 50000
set longchunk 1000
set linesize 1000

即使我设置了所有这些变量:

"WID 0.12 ;"

1 个答案:

答案 0 :(得分:1)

错误与sqlplus设置无关,而是与Oracle DB中SQL引擎中的varchar2大小限制有关。对于11g,限制为4000字节。

在处理查询时,其中一个连接会导致字符串的长度大于限制。

乍一看

的组合
... LTRIM(MAX(SYS_CONNECT_BY_PATH(rights,' / ')) ...

... CONCAT(CONCAT(unit.unit_name, ' - '), role3_.role_name) rights ...

可能会导致问题。你拥有很多单位的权利,或者你有一个深层次的。