Proc*C 通过select into 数组实现查询多条记录,出错!
.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);
}
程序运行结果是提示查找不到数据,但是实际上这数据是存在的,有没有哪位知道原因的,还请不吝赐教!
...全文
相关推荐
ORACLE PROC_*C编程点滴.pdf
**游标管理**: 在PROC_*C中,游标是处理查询结果的关键组件。程序员需要正确声明、打开、提取数据和关闭游标。
proc学习笔记
多记录处理** 当需要处理多条记录时,Pro*C 提供了相应的支持。例如,可以在声明部分定义数组来存储多条记录的信息。
ProC 基础教程-简化版_Vol5 基本增删改
### ProC基础教程—简化版 Vol5:基本增删改#### 数据插入**概述**在Pro*C/C++(简称ProC)中进行数据插入,主要是通过嵌入式的`INSERT`语句来实现的。
oracle PROC开发
【PROC开发详解】PROC,全称为Pro*C,是Oracle公司提供的一种工具,用于在C语言中嵌入SQL语句,实现数据库操作。
proc个人笔记总结.doc
例如,`exec sql select 字段 into :变量 from s_emp where id=1;`将查询结果的字段值赋给C变量。3.


