当然有错误了,在直接open它,fetch它,close它肯定没问题。
问题是你只声明了一次的游标。将声明的语法同样的放在循环中(并且取不同的名称)
问题是你只声明了一次的游标。将声明的语法同样的放在循环中(并且取不同的名称)
解决方案 »
- 想不通这2个表联合查询就查不出,求解
- 如何把excel数据导入oracle数据库中??急。。在线等。。。
- 请高手帮忙看看,为何两个SQL执行效率相差这么远
- 一个部门销售统计报表辅助表的设计!
- rownum执行速度超慢
- SQL語句優化--not in
- 想学PL/SQL。。!!!!!!!!!!
- 如何将excel的数据导入oracle
- 如何实现把一个用户下的所有的对象(表、视图等)导入到另一个新建的用户下?
- AIX+ORACLE9I,报内存不足。
- 如何select出一张表内某个字段是最小的,或者是空的那条纪录(该字段可能有null值)内有详细描述!!!
- 请问各位平时是如何书写这样的SQL能比较有效率:
EXEC SQL whenever not found do break;
for(;;)
{EXEC SQL FETCH SALESPEOPLE
INTO :SS,:NAME,:SAL;
}EXEC SQL CLOSE SALESPEOPLE;
为什么不这么写呢
#include <sqlca.h>
#include <string.h>EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
VARCHAR dbname[20];
int SS;
VARCHAR NAME[10];
int SAL;
EXEC SQL END DECLARE SECTION;
void main()
{
strcpy((char *)username.arr,"SCOTT");
username.len = strlen((char *)username.arr);
strcpy((char *)password.arr,"TIGER");
password.len = strlen((char *)password.arr);
strcpy((char *)dbname.arr,"ctc");
dbname.len = strlen((char *)dbname.arr);
EXEC SQL WHENEVER SQLERROR STOP;
EXEC SQL CONNECT :username
IDENTIFIED BY :password USING :dbname;
if (sqlca.sqlcode != 0)
{
printf("\n与Oracle数据库连接失败!\n");
return;
}
EXEC SQL DECLARE SALESPEOPLE CURSOR FOR
SELECT EMPNO,ENAME,SAL
FROM EMP
WHERE ENAME='KING';
if (sqlca.sqlcode != 0)
{
printf("\n游标声明失败!\n");
return;
}
while(1)
{
EXEC SQL OPEN SALESPEOPLE;
printf("sqlcode:%d\n",sqlca.sqlcode);
EXEC SQL FETCH SALESPEOPLE
INTO :SS,:NAME,:SAL;
printf("SS:%d\nNAME:%s\nSAL:%d\n",SS,(char *)NAME.arr,SAL);
EXEC SQL CLOSE SALESPEOPLE;
break;
}
}
但是我的程序就是放在while中去open就会返回sqlcode=-1012,晕了,怎么回事呀?