每当我运行我的 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 文件。谁能解释我错过了什么?