📄 pbserver.c
字号:
}
/* EXEC SQL CLOSE cur_emp_select; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )217;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if (sqlca.sqlcode != 0)
{
/*CLOSE CURSOR失败*/
tux_return(sendbuf,"CLOSE CURSOR 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
#ifdef _DEBUG_
Fprint32(sendbuf);
#endif
tpreturn( TPSUCCESS, 0, (char *)sendbuf, 0, 0 );
}
/*EMP_PROC SERVICES*/
EMP_PROC(TPSVCINFO *rqst)
{
FBFR32 *sendbuf=NULL;
FLDLEN32 len=0;
/*分配返回缓冲区并初始化*/
sendbuf = IniSendBuf(20480);
if(sendbuf==NULL)
{
tpreturn( TPFAIL, 0, (char *)sendbuf, 0, 0 );
}
/*调用存储过程*/
userlog("开始调用存储过程up_pb_emp\n");
al_empno=8888;
strcpy(ac_ename,"存储过程");
/* EXEC SQL EXECUTE
BEGIN
up_db_emp(:al_empno,:ac_ename,:l_return,:l_errno,:c_errtext);
END;
END-EXEC; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin up_db_emp ( :al_empno , :ac_ename , :l_return , :l_er\
rno , :c_errtext ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )232;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&al_empno;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)ac_ename;
sqlstm.sqhstl[1] = (unsigned int )11;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&l_return;
sqlstm.sqhstl[2] = (unsigned int )4;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)&l_errno;
sqlstm.sqhstl[3] = (unsigned int )4;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)c_errtext;
sqlstm.sqhstl[4] = (unsigned int )256;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if (l_return != 0)
{
tux_return(sendbuf,"调用UP_PB_EMP存储过程出错",l_errno,c_errtext);
}
userlog("调用存储过程up_pb_emp结束\n");
tpreturn( TPSUCCESS, 0, (char *)sendbuf, 0, 0 );
}
/*EMP_UP SERVICES*/
EMP_UP(TPSVCINFO *rqst)
{
FBFR32 *rcvbuf=NULL;
FBFR32 *sendbuf=NULL;
FLDLEN32 len=0;
int i=0;
int iRet=0;
int iOc=0;
int iRows=0;
/*分配返回缓冲区并初始化*/
sendbuf = IniSendBuf(20480);
if(sendbuf==NULL)
{
tpreturn( TPFAIL, 0, (char *)sendbuf, 0, 0 );
}
/*接收客户端来的数据*/
rcvbuf = (FBFR32 *)rqst->data;
#ifdef _DEBUG_
fprintf(stdout,"EMP_UP begin Fprint32......");
Fprint32(rcvbuf);
fprintf(stdout,"EMP_UP end Fprint32......");
#endif
/*客户端传送的行数*/
if(Ffindlast32(rcvbuf, EMPNO, &iRows, &len)== NULL)
{
tux_return(sendbuf,"Ffindlast32(EMPNO) 出错",0,(char *)Fstrerror32(Ferror32));
}
/*begin the transaction*/
if (tpbegin(30, 0) == -1)
{
tux_return(sendbuf,"tpbegin()出错",0,(char *)tpstrerror(tperrno));
}
/*进行数据更新*/
for(i=0;i<iRows;i++)
{
len=sizeof(al_empno);
if(Fget32(rcvbuf,EMPNO,i,(char *)&al_empno,&len) == -1)
{
tux_return(sendbuf,"Fget32(EMPNO) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(ac_ename);
ac_ename[0]='\0';
if(Fget32(rcvbuf,ENAME,i,ac_ename,&len)== -1)
{
tux_return(sendbuf,"Fget32(ENAME) 出错",0,(char *)Fstrerror32(Ferror32));
}
len=sizeof(ac_job);
ac_job[0]='\0';
if(Fget32(rcvbuf,JOB,i,ac_job,&len)== -1)
{
tux_return(sendbuf,"Fget32(JOB) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(al_mgr);
if(Fget32(rcvbuf,MGR,i,(char*)&al_mgr,&len) == -1)
{
tux_return(sendbuf,"Fget32(MGR) 出错",0,(char *)Fstrerror32(Ferror32));
}
len=sizeof(ac_hiredate);
ac_hiredate[0]='\0';
if(Fget32(rcvbuf,HIREDATE,i,ac_hiredate,&len) == -1)
{
tux_return(sendbuf,"Fget32(HIREDATE) 出错",0,(char *)Fstrerror32(Ferror32));
}
len=sizeof(af_sal);
if(Fget32(rcvbuf,SAL,i,(char *)&af_sal,&len) == -1)
{
tux_return(sendbuf,"Fget32(SAL) 出错",0,(char *)Fstrerror32(Ferror32));
}
len=sizeof(af_comm);
if(Fget32(rcvbuf,COMM,i,(char*)&af_comm,&len) == -1)
{
tux_return(sendbuf,"Fget32(COMM) 出错",0,(char *)Fstrerror32(Ferror32));
}
len=sizeof(al_deptno);
if(Fget32(rcvbuf,DEPTNO,i,(char*)&al_deptno,&len) == -1)
{
tux_return(sendbuf,"Fget32(DEPTNO) 出错",0,(char *)Fstrerror32(Ferror32));
}
#ifdef _DEBUG_
userlog("@@@DATA FROM CLIENT :%d\t%s\t%s\t%d\t%s\t%f\t%f\t%d\n",al_empno,ac_ename,ac_job,al_mgr,ac_hiredate,af_sal,af_comm,al_deptno);
#endif
/* EXEC SQL delete from emp where empno = :al_empno; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "delete from emp where empno=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )267;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&al_empno;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if((sqlca.sqlcode != 0)&&(sqlca.sqlcode != SQLNOTFOUND))
{
/*EXEC SQL ROLLBACK;*/
tpabort(0);
tux_return(sendbuf,"从表EMP中删除记录出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
/* EXEC SQL insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (:al_empno,:ac_ename,:ac_job,:al_mgr,to_date(:ac_hiredate,'yyyy/mm/dd hh24:mi:ss'),:af_sal,:af_comm,:al_deptno); */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "insert into emp(empno,ename,job,mgr,hiredate,sal,comm,dept\
no) values (:b0,:b1,:b2,:b3,to_date(:b4,'yyyy/mm/dd hh24:mi:ss'),:b5,:b6,:b7)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )286;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&al_empno;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)ac_ename;
sqlstm.sqhstl[1] = (unsigned int )11;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)ac_job;
sqlstm.sqhstl[2] = (unsigned int )11;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)&al_mgr;
sqlstm.sqhstl[3] = (unsigned int )4;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)ac_hiredate;
sqlstm.sqhstl[4] = (unsigned int )11;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = ( void *)&af_sal;
sqlstm.sqhstl[5] = (unsigned int )8;
sqlstm.sqhsts[5] = ( int )0;
sqlstm.sqindv[5] = ( void *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned int )0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = ( void *)&af_comm;
sqlstm.sqhstl[6] = (unsigned int )8;
sqlstm.sqhsts[6] = ( int )0;
sqlstm.sqindv[6] = ( void *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned int )0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = ( void *)&al_deptno;
sqlstm.sqhstl[7] = (unsigned int )4;
sqlstm.sqhsts[7] = ( int )0;
sqlstm.sqindv[7] = ( void *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned int )0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if(sqlca.sqlcode!=0)
{
/*EXEC SQL ROLLBACK;*/
tpabort(0);
tux_return(sendbuf,"往表EMP插入记录出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
}
/*提交*/
/*EXEC SQL commit work;
if(sqlca.sqlcode!=0)
{
EXEC SQL ROLLBACK;
tux_return(sendbuf,"COMMIT WORK 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}*/
/*commit the transaction*/
if (tpcommit(0) == -1)
{
tux_return(sendbuf,"tpcommit()出错",0,(char *)tpstrerror(tperrno));
}
tpreturn( TPSUCCESS, 0, (char *)sendbuf, 0, 0 );
}
/*EMP_GET SERVICES*/
EMP_GET(TPSVCINFO *rqst)
{
FBFR32 *sendbuf=NULL;
FLDLEN32 len=0;
int i=0;
int iRet=0;
int iOc=0;
int iRows=0;
/*分配返回缓冲区并初始化*/
sendbuf = IniSendBuf(20480);
if(sendbuf==NULL)
{
tpreturn( TPFAIL, 0, (char *)sendbuf, 0, 0 );
}
/*从EMP表中取数据*/
/* EXEC SQL DECLARE cur_emp_get CURSOR FOR
SELECT EMPNO, ENAME,JOB,MGR,to_char(HIREDATE,'yyyy/mm/dd hh24:mi:ss'),SAL,COMM,DEPTNO FROM EMP; */
if(sqlca.sqlcode!=0)
{
tux_return(sendbuf,"DECLARE CURSOR 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
/* EXEC SQL OPEN cur_emp_get; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0005;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )333;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if(sqlca.sqlcode!=0)
{
/* EXEC SQL CLOSE cur_emp_get; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )348;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -