- 论坛徽章:
- 0
|
在SYBASE的嵌C中, 有这样一段代码.
数据库用户:apdbo; 密码:apdbop, 我建了一个简单的表,
create table a ( amt char(10) ),表里有一条记录, “1234567890”, 程序执行到子进程
里的CONNECT就不往下走了。 你看看这个程序有什么问题。
#include <sybtesql.h>;
#include <ctpublic.h>;
#include <stdlib.h>;
#include <stdio.h>;
#include <signal.h>;
EXEC SQL INCLUDE sqlca;
InitSysPara();
main()
{
EXEC SQL BEGIN DECLARE SECTION;
char sAmt[30], username[30],passwd[30];
int iAmt= 0;
EXEC SQL END DECLARE SECTION;
int i;
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL WHENEVER SQLWARNING CONTINUE;
EXEC SQL WHENEVER NOT FOUND CONTINUE;
signal(SIGCLD, SIG_IGN);
EXEC SQL CONNECT "apdbo" IDENTIFIED BY "apdbop";
InitSysPara();
EXEC SQL DISCONNECT ALL;
if ( fork() == 0 ) {
fprintf(stdout, "!!!!! [%d]\n",__LINE__);
EXEC SQL CONNECT "apdbo" IDENTIFIED BY "apdbop";
fprintf(stdout, "!!!!! [%d]\n",__LINE__);
EXEC SQL select amt into :sAmt from a;
if (sqlca.sqlcode != 0 )
{
fprintf(stderr, "sqlcode=[%d] [%s] [%d] lines [%ld]\n", sqlca.sqlcoe, sqlca.sqlerrm.sqlerrmc, __LINE__, sqlca.sqlerrm.sqlerrml);
EXEC SQL DISCONNECT ALL;
exit(1);
}
fprintf(stdout, "AMT=[%s]\n", sAmt);
EXEC SQL DISCONNECT ALL;
fprintf(stdout, "SQLCODE=[%d],MSG=[%s]\n",sqlca.sqlcode,sqlca.sqlerrm.sql
errmc);
exit(1);
}
return 1;
}
InitSysPara()
{
} |
|