我的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确定程序连接上数据库了?
------解决方案--------------------
看不出什么,建议在每个步骤之间加入调试信息进行调试