各位帮我看下 为什么我用pro c从oracle 9的数据库中读数据为什么读出的内容一直是空的呢,sqlcode返回0查询是成功的。表    SYS_DCOMPILE
id           NUMBER
content  CLOB程序:
OCIClobLocator      *clob;
unsigned int           offset = 1;
char                      buffer[100];
EXEC SQL VAR buff IS VARCHAR(100); /*连接数据库 正常*/
EXEC SQL ALLOCATE :clob;
EXEC SQL SELECT content INTO :clob FROM SYS_DCOMPILE WHERE rownum = 1;
EXEC SQL LOB OPEN :clob READ ONLY;amt = 64 * 1024 * 1024; /*64K*/
EXEC SQL LOB READ :amt FROM :clob AT :offset INTO :buffer程序运行下来BUFFER中一直没有数据,各位有知道是为什么的吗?
先谢谢了~~~ 

解决方案 »

  1.   

    WHERE rownum = 1 这样写是没有结果的。
    你的意图是要做什么呢?rownum <2 看看,就该有了哦。
      

  2.   

    事实上是这样的,后来我改写了一下EXEC SQL SELECT id,content INTO :s_id,:clob FROM SYS_DCOMPILE WHERE rownum = 1;调试下来程序能够正确读出s_id看样子应该不是rownum=1的问题
      

  3.   

    oracle报错是
    ORA-03127: no new operations allowed until the active operation ends
    有谁遇到过么?
      

  4.   

    最后自己解决了这个问题 原因是宿主变量使用错误将
    char  buffer[100];
    EXEC SQL VAR buff IS VARCHAR(100); 
    改成varchar buffer[100];问题解决同时,在用CLOB READ 分段读取时没有读取全部数据前试图释放LOB LOCATOR 也会引发上述错误