📄 test.cpp
字号:
#include <stdio.h>
#include <atmi.h>
#include <userlog.h>
EXEC SQL INCLUDE sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
char c_ename[20];
EXEC SQL VAR c_ename IS STRING(20);
EXEC SQL END DECLARE SECTION;
int tpsvrinit(argc, argv)
int argc;
char *argv[];
{
if(tpopen()==-1)
{
userlog("tpopen() failure\n");
return -2;
}
return 0;
}
void tpsvrdone()
{
if(tpclose()==-1)
{
userlog("tpclose() failure\n");
}
}
ENQ(TPSVCINFO *rqst)
{
char *reqstr;
long len;
TPQCTL qctl;
reqstr=rqst->data;
EXEC SQL SELECT ename into :c_ename from EMP where empno=1000;
if(sqlca.sqlcode !=0)
{
userlog("%d, %s\n",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
strcpy(reqstr,(char *)sqlca.sqlerrm.sqlerrmc);
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
if(tpbegin(30,0) == -1)
{
userlog("tpbegin() fail=%s\n",tpstrerror(tperrno));
strcpy(reqstr,tpstrerror(tperrno));
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
qctl.flags = 0;
if (tpenqueue("QSPACE", "DEMOQ", (TPQCTL *)&qctl,(char *)reqstr,0, 0) == -1)
{
userlog("tpenqueue() failure: %s\n",tpstrerror(tperrno));
if (tperrno == TPEDIAGNOSTIC)
{
printf("Queue manager diagnostic %ld\n",qctl.diagnostic);
}
strcpy(reqstr,tpstrerror(tperrno));
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
EXEC SQL delete from EMP where empno=1000;
if(sqlca.sqlcode !=0)
{
userlog("%d, %s\n",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
strcpy(reqstr,(char *)sqlca.sqlerrm.sqlerrmc);
if(tpabort(0)==-1)
{
userlog("tpabort() failure:%s\n",tpstrerror(tperrno));
strcpy(reqstr,tpstrerror(tperrno));
}
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
if(tpcommit(0) == -1)
{
userlog("tpcommit failure: %s\n",tpstrerror(tperrno));
strcpy(reqstr,tpstrerror(tperrno));
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
strcpy(reqstr,"ENQ success!");
tpreturn( TPSUCCESS, 0, reqstr, 0, 0 );
}
DEQ(TPSVCINFO *rqst)
{
char *reqstr;
long len;
TPQCTL qctl;
reqstr=rqst->data;
qctl.flags = 0;
if(tpbegin(30,0) == -1)
{
userlog("tpbegin() fail=%s\n",tpstrerror(tperrno));
}
if (tpdequeue("QSPACE", "DEMOQ", (TPQCTL *)&qctl, (char **)&reqstr,&len, TPNOTIME) == -1)
{
userlog("tpdequeue() failure: %s\n",tpstrerror(tperrno));
if (tperrno == TPEDIAGNOSTIC)
{
userlog("Queue manager diagnostic %ld\n",qctl.diagnostic);
}
strcpy(reqstr,tpstrerror(tperrno));
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
userlog("dequeue data:%s\n",reqstr);
strcpy(c_ename,reqstr);
EXEC SQL INSERT INTO ss values(:c_ename);
if(sqlca.sqlcode !=0)
{
userlog("%d, %s\n",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
strcpy(reqstr,(char *)sqlca.sqlerrm.sqlerrmc);
if(tpabort(0)==-1)
{
userlog("tpabort() failure: %s\n",tpstrerror(tperrno));
strcpy(reqstr,tpstrerror(tperrno));
}
tpreturn( TPFAIL, 0, reqstr, 0, 0 );
}
if(tpcommit(0) == -1)
{
userlog("tpcommit() failure: %s\n",tpstrerror(tperrno));
}
strcpy(reqstr,"DEQ success!");
tpreturn( TPSUCCESS, 0, reqstr, 0, 0 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -