【问题标题】:Oracle - Add rows together in one fieldOracle - 在一个字段中添加行
【发布时间】: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,我仍然会遇到同样的错误。

标签: sql plsql


【解决方案1】:

ORA-01489: result of string concatenation is too long 表示您的部分 SQL 正在生成一个长度超过 4000 个字符的字符串,这是 SQL 中 VARCHAR2 的限制。

您不能在 SQL 中截断字符串(例如使用 SUBSTR),因为 SQL 需要在将字符串发送到 SUBSTR 函数之前构造字符串;它会因为超出限制而放弃。

要解决这个问题,您可能需要创建自己的 PL/SQL 函数,其中 VARCHAR2 有更大的长度限制 (32k)。

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多