📄 proc1.pc
字号:
#include <stdio.h>
typedef char mystr[20];
int connect();
int error_proc();
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL TYPE mystr IS STRING(20);
mystr username;
mystr password;
mystr colname;
mystr coltype;
int empno;
mystr ename;
mystr job;
int mgr;
mystr hireDate;
float sal;
float comm;
int deptno;
short ind_comm;
short ind_mgr;
EXEC SQL END DECLARE SECTION;
exec sql include sqlca;
int main(){
int i = 0;
EXEC SQL WHENEVER SQLERROR DO error_proc();
strcpy(username,"SCOTT");
strcpy(password,"scott");
if(connect() != 0){
exit(-1);//若数据库连接失败,则直接退出程序
}
EXEC SQL DECLARE col_cursor CURSOR FOR SELECT CNAME,COLTYPE FROM COL WHERE TNAME='EMP';
EXEC SQL DECLARE emp_cursor CURSOR FOR SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM EMP;
EXEC SQL OPEN col_cursor;
for(;;i++){
EXEC SQL WHENEVER NOT FOUND DO break;
EXEC SQL FETCH col_cursor INTO :colname,:coltype;
printf("%s(%s) ",colname,coltype);
}
EXEC SQL WHENEVER NOT FOUND DO continue;
EXEC SQL CLOSE col_cursor;
printf("\n******************************************************************************\n");
EXEC SQL OPEN emp_cursor;
for(;;){
EXEC SQL WHENEVER NOT FOUND DO break;
EXEC SQL FETCH emp_cursor INTO :empno,:ename,:job,:mgr INDICATOR:ind_mgr,:hireDate,:sal,:comm INDICATOR :ind_comm,:deptno;
if(ind_comm < 0){
if(ind_mgr < 0){
printf("%-17d%-17s%-17s%-17s%-17s%-17.2f%-17s%-17d\n",empno,ename,job,"NULL",hireDate,sal,"NULL",deptno);
printf("----------------------------------------------------------------------------\n");
}
else{
printf("%-17d%-17s%-17s%-17d%-17s%-17.2f%-17s%-17d\n",empno,ename,job,mgr,hireDate,sal,"NULL",deptno);
printf("----------------------------------------------------------------------------\n");
}
}
else{
if(ind_mgr < 0){
printf("%-17d%-17s%-17s%-17s%-17s%-17.2f%-17.2f%-17d\n",empno,ename,job,"NULL",hireDate,sal,comm,deptno);
printf("----------------------------------------------------------------------------\n");
}
else{
printf("%-17d%-17s%-17s%-17d%-17s%-17.2f%-17.2f%-17d\n",empno,ename,job,mgr,hireDate,sal,comm,deptno);
printf("----------------------------------------------------------------------------\n");
}
}
}
EXEC SQL WHENEVER NOT FOUND DO continue;
EXEC SQL CLOSE emp_cursor;
}
int connect(){
EXEC SQL WHENEVER SQLERROR GOTO error_msg;
//真正起连接做用的是下面这一句
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("Connect successed!\n");
return 0;
error_msg:
printf("Connect failed\n");
return -1;
};
int error_proc(){
printf("Error Occured\n");
exit(-1);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -