[服务端编写]
/**
* FILE : server.pc
* AUTHOR : LeeQ
* CREATE : 2006/08/08
* DESC : A simple Proc program for Tuxedo server.
**/
#include <stdio.h>
#include <ctype.h>
#include <atmi.h> /* for tuxedo server */
#include <string.h>
#include <time.h>
EXEC SQL INCLUDE SQLCA;
int execsql()
{
EXEC SQL BEGIN DECLARE SECTION;
char username[20];
char password[20];
char dbname[10];
char data[128];
EXEC SQL END DECLARE SECTION;
strcpy(username, "scott");
strcpy(password, "tiger");
strcpy(dbname, "ora9i");
/* connect to Oracle database */
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbname;
printf("/nConnected to ORACLE : [%d]/n", sqlca.sqlcode);
EXEC SQL DECLARE cur_sor CURSOR FOR SELECT ENAME FROM EMP;
EXEC SQL OPEN cur_sor;
while(1)
{
memset(data, 0, sizeof(data));
EXEC SQL FETCH cur_sor INTO :data;
if(sqlca.sqlcode == 1403)
{
break;
}
printf("[%s]/n", data);
}
EXEC SQL CLOSE cur_sor;
EXEC SQL COMMIT WORK RELEASE;
return 0;
}
void TUXFILE(TPSVCINFO *rqst)
{
execsql();
tpreturn(TPSUCCESS, 0, NULL, 0L, 0);
}
<编译此程序如下>
proc include=$TUXDIR/include server.pc
/*此处如遇到编译无法导入头文件请检查proc的头文件查找路径。在$ORACLE_HOME/PRECOMP...下面*/
buildserver -f server.c -o server -s TUXFILE -f "-I$ORACLE_HOME/include -L$ORACLE_HOME/lib -lclntsh"
[客户端编写]
使用tpcall调用Tuxedo服务TUXFILE即可输出查询到的数据。(此处不再张贴)
这是一个简单的Tuxedo服务连接Oracle程序仅在展示如何在编写Tuxedo服务的时候直接连接Oracle。
优化此程序后可以使连接和断开数据库操作在服务启动时和终止时进行。即将连接数据库写在tpsvrinit中,
断开数据库写在tpsvrdone中,如此只需要一次数据库连接开关。