2016-03-04 65 views
2

我們試圖在表列中插入一個大字符串,並獲取「長度不能超過最大長度(8388607字節)」的錯誤。 (0x7F FFFF)。輸入數據字段長度超過10MB。當在HANA中插入CLOB時(長度超過7FFFFF),獲取最大字符串長度時出現錯誤

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)。我們的字符串長度在此限制內。所以這非常混亂。將欣賞任何提示來解決這個問題。

非常感謝。

---------- CODE

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;}]; 
+0

沒有看到你的代碼和表定義提供合理的答案是不可能的。請在您的問題中添加更多詳細信息。 –

+0

@LarsBr。添加了表格定義和示例代碼。實際的代碼太大而無法查明用例。該調用來自XSJS。 – Dinesh

回答

0

的原因錯誤是,你似乎使用字符串的方法來處理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列實際上是被觸動的。

通常只能通過將數據綁定到insert語句中的參數來插入LOB列。

+0

這是從XSJS調用的,它只有'string'類型,但也有一個'setClob'方法。我的XSJS使用'PrepareCall'綁定了一個proc,後者又返回了每列DB類型,通知每個參數的設置方式。接下來我們執行準備好的語句。如果您可以在'XSJS'中顯示需要更改的內容,我將不勝感激。謝謝。 – Dinesh