【发布时间】:2012-03-02 17:58:47
【问题描述】:
使用以下代码。不断出现以下错误
Select distinct
ship_L.ship_ID,
ship_L.Item_Num,
C.sku,
C.ob_oid,
c.Container
From (
Select distinct
ob_oid,
sku,
substr((ltrim(sys_Connect_By_Path(trim(to_Cont),' / '))),2,(length(ltrim(sys_Connect_By_Path(trim(to_Cont),' / '))))) as Container
From (
Select distinct
Ob_oid,
sku,
To_Cont,
row_number() Over (Partition by sku order by to_Cont) -1 as seq
From (
Select distinct
ob_oid,
sku,
To_Cont
from elite_76_w1.ITH_f
--Where ob_oid = '237472'
-- and sku = '64154'
)
)
Where connect_By_Isleaf = 1
Connect by seq = Prior seq +1 and sku = Prior sku
Start with seq = 1
) C
Left Join elite_76_D.ship_L
on ship_L.ship_id = C.ob_oid
and ship_L.item_num = C.sku
WHere C.ob_oid = '237472'
and C.sku = '64154'
收到此错误: ORA-01489: 字符串连接的结果太长 01489. 00000 - “字符串连接的结果太长” *原因:字符串连接的结果超过了最大大小。 * 行动:确保结果是酒糟比最大尺寸。第 3 行供应商代码 1489 错误。
开始:
SKU 位置
64154 A153945
64154 A153943
64154 A153947
64154 A153946
64154 A153944
需要: 64154 A153944 / A153945 / A153946 / A153947
感谢大家的帮助, 大卫
【问题讨论】:
-
由于这是一个猜测,我将发表评论而不是发布。在您最内部的查询中,将“to_cont”转换为更大的 VARCHAR()。例如,它是一个 VARCHAR(32),将其转换为 VARCHAR(4000)。 [所有假设您的输出字段被限制为与您的输入相同的长度,因此这可能允许您的输出中包含更多字符。] 如果 4000 不是就足够了,您可以查看 CLOB,但很有可能您的其余代码不适用于该数据类型。
-
TSQL 用于 MSSQL。这个问题是甲骨文。
-
不走运。即使我在使用该字段的任何地方将“to_Cont”转换为 4000,我仍然会遇到同样的错误。