日期:2014-05-17  浏览次数:21064 次

关于PRO*C获取索引名的问题,急!!!在线等待!
我的PC代码如下:
5. int   CDBOracle::getindexs(char*   tablename)
6. {
9. for(int   i=0;i <n_indexcount;i++)
10. {
11. memset(r_ExistIndex[i],0,60);
12. }
13. int   rec   =   -1;
14. sprintf((char   *)dynstmtsql,
15. "SELECT   INDEX_NAME   INTO   :   R_INDEXNAME   FROM   USER_IND_COLUMNS   WHERE   TABLE_NAME   =   '%s ' ",tablename);

18. EXEC   SQL   PREPARE   stm   FROM   :dynstmtsql;
19. EXEC   SQL   DECLARE   cur3   CURSOR   FOR   stm;
20. EXEC   SQL   OPEN   cur3;
21. EXEC   SQL   FETCH   cur3   INTO   :r_ExistIndex;
22. rec   =   (int)sqlca.sqlerrd[2];
23. EXEC   SQL   CLOSE   cur3;            
24. for   (i   =   0;   i   <   rec   ;i++   )
25. {
26. r_ExistIndex[i][59]=0;
27. trimSpace(r_ExistIndex[i]);
28. }
29. return   rec;
30. }
其代码就是将某表的索引名称保存在ExistIndex中,其中SQL语句在PLSQL中运行没有问题,而且换过select   index_name   from   user_indexes   where   table_name   =   tablename;效果相同,出来的结果有两个错误
1为ORA-   -2108ORA--2108:   Message   -2108   not   found;     product=RDBMS;   facility=ORA
2为ora-24337:未准备语句句柄

请大虾们帮我看一下。在线等待,谢谢。


------解决方案--------------------
r_ExistIndex怎么声明的?
请贴出代码
还有,lz确定程序连接上数据库了?
------解决方案--------------------
看不出什么,建议在每个步骤之间加入调试信息进行调试