- 论坛徽章:
- 0
|
回复 3楼 andychan 的帖子
#include <stdio.h>
#include <string.h>
typedef char asciz;
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL TYPE asciz IS STRING(20);
asciz username[20];
asciz password[20];
int dept_number;
char address[10][21];
char emp_name[10][21];
int tex[10];
int done_flag;
int array_size;
int ret_num;
int SQLCODE;
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;
int print_rows();
int sqlerror();
main()
{
int i;
strcpy(username,"han" ;
strcpy(password,"han" ;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("\nConnect to ORACLE as user:%s\n",username);
printf("Enter department number:" ;
scanf("%d",&dept_number);
fflush(stdin);
array_size=10;
done_flag=0;
ret_num=0;
for(;
{
EXEC SQL EXECUTE
BEGIN
emp_actions.get_employees (:dept_number,:array_size,:ret_num,:done_flag,
:emp_name,:address,:tex);
END;
END_EXEC;
print_rows(ret_num);
if (done_flag)
break;
}
EXEC SQL COMMIT WORK RELEASE;
exit(0);
}
print_rows(n)
int n;
{
int i;
if (n==0)
{
printf("No rows retrieved.\n" ;
return;
}
printf("\n\nGot %d rows %c\n",n,n==1?'\0':'s');
printf("%-20.20s%-50.50s%s\n","Ename","Address","Tex" ;
for(i=0;i<n;i++)
printf("%-20.20s%-50.50s%d\n",emp_name[i],address[i],tex[i]);
}
sqlerror()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\nORACLE error detected:" ;
printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE;
exit(1);
} |
|