Proc*C 通过select into 数组实现查询多条记录,出错!

宇宙漫步者 2012-03-14 03:46:25
.pc文件如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

EXEC SQL BEGIN DECLARE SECTION;
VARCHAR userid[20];
VARCHAR passwd[20];
VARCHAR remoteDB[10];
VARCHAR emp_name[100][20];
VARCHAR job[100][50];
int emp_number[100];
float salary[100];
int dept_number;
EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE SQLCA;

void sqlerr();

int main()
{
int n,i;
strcpy(userid.arr,"scott");
userid.len=strlen(userid.arr);
strcpy(passwd.arr,"tiger");
passwd.len=strlen(passwd.arr);
strcpy(remoteDB.arr,"proc");
remoteDB.len=strlen(remoteDB.arr);

EXEC SQL WHENEVER SQLERROR DO sqlerr();
EXEC SQL WHENEVER NOT FOUND GOTO notfound;
/*EXEC SQL WHENEVER NOT FOUND CONTINUE;*/

EXEC SQL CONNECT :userid IDENTIFIED BY :passwd USING :remoteDB;

printf("Connected to ORACLE user:%s\n",userid.arr);

printf("Enter employee's DeptNo:\n");
scanf("%d",&dept_number);

EXEC SQL SELECT EMPNO,ENAME,JOB,SAL
INTO :emp_number,:emp_name,:job,:salary
FROM TEST_EMP
WHERE DEPTNO=:dept_number;

n=sqlca.sqlerrd[2];

printf("-------------employee's info--------------\n");
printf("emp_number\temp_name\tjob\tsalary\n");
for(i=0;i<n;i++)
printf("%d\t%s\t%s\t%6.2f\n",emp_number[i],emp_name[i],job[i],salary[i]);

EXEC SQL COMMIT WORK RELEASE;
exit(0);

notfound:
printf("data not found!\n");
return;
}

void sqlerr()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("sqlerror info:%s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE;
exit(1);
}


程序运行结果是提示查找不到数据,但是实际上这数据是存在的,有没有哪位知道原因的,还请不吝赐教!
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
宇宙漫步者 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhzhs007 的回复:]
这样行吗?我觉得你还是使用游标吧
[/Quote]
这是一本书上的示例程序,如果把EXEC SQL WHENEVER NOT FOUND GOTO notfound;
改成EXEC SQL WHENEVER NOT FOUND CONTINUE;那么结果是可以显示出来的,但是,为什么在EXEC SQL WHENEVER NOT FOUND GOTO notfound;情况下会没有数据呢?这个搞不明白
zhzhs007 2012-03-14
  • 打赏
  • 举报
回复
这样行吗?我觉得你还是使用游标吧
vanxeger 2012-03-14
  • 打赏
  • 举报
回复
这个怎么发到C语言来了!?晕,存储过程曾经写过,但是现在忘光了!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧