我在使用数据库大对象编程的时候,发现采用:
OCIClobLocator *Lob_loc;
unsigned int Length;
EXEC SQL WHENEVER SQLERROR DO Sample_Error();
EXEC SQL ALLOCATE :Lob_loc;
EXEC SQL SELECT ad_sourcetext INTO :Lob_loc
FROM Print_media WHERE product_id = 3060 AND ad_id = 11001;
/* Opening the LOB is Optional: */
EXEC SQL LOB OPEN :Lob_loc READ ONLY;
/* Get the Length: */
EXEC SQL LOB DESCRIBE :Lob_loc GET LENGTH INTO :Length;
/* If the LOB is NULL or unitialized, then Length is Undefined: */
printf("Length is %d characters\n", Length);
EXEC SQL LOB READ :Amount FROM :Lob_loc INTO :Buffer;
int len=strlen(Buffer);
/* Closing the LOB is mandatory if you have Opened it: */
EXEC SQL LOB CLOSE :Lob_loc;
EXEC SQL FREE :Lob_loc;
执行结果发现:
printf("Length is %d characters\n", Length);
int len=strlen(Buffer);
2个长度不一致,为什么啊?