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

📄 oradyncli.c

📁 TUXEDO编程例子
💻 C
字号:
/********************************************************************
Author:sylpjx           Email:sylpjx-s@163.net
MODIFY TIME: 2003-3            dev2dev ID: sylpjx
PROGRAM NAME: OraDynCli.c                                       
程序说明:这个程序是ORACLE的动态方法四的测试程序,
采用的是TUXEDO中的TPCALL(同步通信方式)
*********************************************************************/
#include <stdio.h>
#include "atmi.h"
#include "fml.h"
#include "userlog.h"
#include "userfml.h"  /*用户自己定义的头文件*/


#if defined(__STDC__) || defined(__cplusplus)
main(int argc, char *argv[])
#else
main(argc, argv)
int argc;
char *argv[];
#endif

{

	char *sendbuf;
  	FBFR *RcvBuf;
	long sendlen, rcvlen;
	int ret;
	FILE *fp;

  	fp = fopen("fmlReturn.txt","w");/*打开fmlReturn.txt,如果文件不存在,则创建后打开*/
	if (fp == NULL)
	{
		userlog("open fmlReturn.txt failed\n");
		exit(1);
	}

	/*创建一个应用*/
	if (tpinit((TPINIT *) NULL) == -1) {
		(void) fprintf(stderr, "Tpinit failed\n");
		exit(1);
	}
	
	sendlen = 1024;/*假设SQL语句的最大长度只能小于1024*/

	/* Allocate STRING and FML buffers for the request and the reply 
	分配缓冲区*/

	if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen)) == NULL) {
		(void) fprintf(stderr,"Error allocating send buffer\n");
		tpterm();
		exit(1);
	}

  	if ((RcvBuf = (FBFR *)tpalloc("FML", NULL, 8*1024)) == NULL)/*为返回的值申请了8K字节的长度*/
  	{
    		fprintf(stderr, "Tpalloc for string buffer failed: %s\n",tpstrerror(tperrno));
    		tpfree((char *)sendbuf);
    		tpterm();
    		exit(1);
  	}

	(void) strcpy(sendbuf, "select * from emp");/*向服务端发送的SOL语句*/

	/* Request the service TOUPPER, waiting for a reply */
	ret = tpcall("DYN4", (char *)sendbuf, 0, (char **)&RcvBuf, &rcvlen, (long)0);

	if(ret == -1) {
		(void) fprintf(stderr, "Can't send request to service TOUPPER\n");
		(void) fprintf(stderr, "Tperrno = %d\n", tperrno);
		tpfree(sendbuf);
		tpfree((char *)RcvBuf);/*释放FBFR类型的缓冲*/
		tpterm();
		exit(1);
	}
	
	/*程序为了调试加入的语句,现在只是为了显示从服务端传回的数据的正确性,所以运用这个函数来在文件中打印显示结果*/
	Ffprint(RcvBuf,fp);	
  	fclose(fp); /*关闭文件*/

	/* Free Buffers & Detach from System/T */
	/*释放缓冲*/
	tpfree(sendbuf);
	tpfree((char *)RcvBuf);
	tpterm();
	return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -