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

宇宙漫步者 宇宙漫步者 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
.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);
}


程序运行结果是提示查找不到数据,但是实际上这数据是存在的,有没有哪位知道原因的,还请不吝赐教!
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
宇宙漫步者
C语言 70,039 成员 243,237 内容