⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pbserver.c

📁 tuxede下面的编程
💻 C
📖 第 1 页 / 共 5 页
字号:
	}
	/* 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 + -