【问题标题】:Getting maximum string length exeeded error when inserting a CLOB in HANA (longer than 7FFFFF)在 HANA 中插入 CLOB 时出现最大字符串长度错误(超过 7FFFFF)
【发布时间】:2016-06-18 21:13:22
【问题描述】:

我们正在尝试将一个大字符串插入一个表列并收到错误“长度不能超过最大长度(8388607 字节)”。 (0x7F FFFF)。输入数据字段长度超过 10MB。

HANA version SPS 9 (Rev 97)
Data type of variable and table column is CLOB
Using INSERT in a SQLSCRIPT Stored Procedure

HANA 数据类型文档说任何 LOB 对象的最大长度为 2GB (0x7FFF FFFF)。我们的字符串长度正好在这个限制之内。所以这非常令人困惑。将不胜感激任何提示来解决这个问题。

非常感谢。

--------- 代码

CREATE PROCEDURE XXX_SCHEMA.PROC_INSERT_INTO_CLOB 
    ( IN DATA_CLOB CLOB,  ) 
    BEGIN
 LANGUAGE SQLSCRIPT SQL SECURITY INVOKER default schema XXX_SCHEMA AS               
        INSERT INTO "XXX_SCHEMA"."XXX::DB_YY_CLOB"
            (
                'ABC'   ,
                CURRENT_TIMESTAMP ,
                DATA_CLOB       
           )
            SELECT F1,
                  F2,
                  :DATA_CLOB
            FROM DUMMY ;
    END;


-- Table Defintion
table.schemaName =  "XXX_SCHEMA";
table.tableType = ROWSTORE;
table.columns = [
{name = "F1";sqlType = NVARCHAR;nullable = false; length = 3;},
{name = "F2";sqlType = TIMESTAMP;nullable = true;},
{name = "DATA_CLOB";sqlType = CLOB;nullable = true;}];

【问题讨论】:

  • 没有看到你的代码和表定义提供一个合理的答案是不可能的。请为您的问题添加更多详细信息。
  • @LarsBr。添加了表定义和示例代码。实际代码过于庞大,无法确定用例。调用来自 XSJS。

标签: hana sql-scripts


【解决方案1】:

错误的原因是您似乎使用字符串方法来处理 CLOB 数据。 当我尝试简单的事情时,比如插入一个非常长的值,通过

update rclob set data_clob = lpad ('X', 2000000000, 'Y');

我也收到了错误信息

Could not execute 'update rclob set data_clob = lpad ('X', 2000000000, 'Y')'
SAP DBTech JDBC: [384]: string is too long: length can't exceed maximum length(8388607bytes) at function lpad() (at pos 29) 

由于 LPAD 在输入 CLOB 之前会生成一个字符串,因此在实际触摸 CLOB 列之前抛出错误消息。

一般LOB列只能通过将数据绑定到insert语句中的参数来插入。

【讨论】:

  • 这是从 XSJS 调用的,它只有 string 类型,但也有 setClob 方法。我的 XSJS 使用 PrepareCall 绑定了一个 proc,它反过来返回每列 DB 类型,告知如何设置每个参数。接下来我们执行准备好的语句。如果您能在XSJS 中显示需要更改的内容,我将不胜感激。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多