69,382
社区成员
发帖
与我相关
我的任务
分享
#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);
}