1

每当我运行我的 Pro*C 代码时,它使用 CLOB 将一个大缓冲区插入到表中。

ORA-24811:写入 LOB 时,提供的数据少于指示的数据。

代码如下

OCIClobLocator *lob;  
...  
EXEC SQL insert into TAB (MSG,STATUS ,ERROR_DESC ,ACCESS_DATE   )  
       values   (empty_clob(),:status,:error_desc,:sys_date_time);  
    /* Allocate and Initialize the Locator: */  
EXEC SQL ALLOCATE :lob;  
printf("CLOB Allocated\n");  
EXEC SQL SELECT MSG INTO :lob  
      FROM TAB WHERE STATUS = :status FOR UPDATE;  

/***opening the CLOB***/  
EXEC SQL LOB OPEN :lob READ WRITE;  
/*** writing to clob ***/  
printf("messlen:%d, actual string length:%d\n",messlen,strlen(buffer));  
EXEC SQL LOB WRITE ONE :messlen FROM :buffer INTO :lob;  
SYS_CHECK_SQL_ERROR  

输出

    CLOB Allocated  
    messlen:6348, actual string length:6348  
    ***** ERROR sqlca=|-24811|*****

缓冲区有一个很大的 xml 文件。谁能解释我错过了什么?

4

0 回答 0