📄 testdb2.c
字号:
static char sqla_program_id[162] =
{
0,42,68,65,75,65,73,65,84,69,83,84,68,66,50,32,107,66,115,56,
74,68,74,89,48,49,49,49,49,32,50,32,0,8,69,66,67,83,32,32,
32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0
};
#include "sqladef.h"
static struct sqla_runtime_info sqla_rtinfo =
{{'S','Q','L','A','R','T','I','N'}, sizeof(wchar_t), 0, {' ',' ',' ',' '}};
static const short sqlIsLiteral = SQL_IS_LITERAL;
static const short sqlIsInputHvar = SQL_IS_INPUT_HVAR;
#line 1 "testdb2.sqc"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sql.h>
#include <sqlenv.h>
#include <sqlda.h>
#include <sqlca.h>
#include <sqlutil.h>
#include <db2ApiDf.h>
#include <ctype.h>
void SqlInfoGet(char *Msg, struct sqlca *pSqlca);
/*
EXEC SQL BEGIN DECLARE SECTION;
*/
#line 14 "testdb2.sqc"
sqlint32 Records;
long id;
char name[21];
char strStmt[256];
/*
EXEC SQL END DECLARE SECTION;
*/
#line 19 "testdb2.sqc"
int main(int argc, char *argv[])
{
int rc = 0;
char nodeName[SQL_INSTNAME_SZ + 1];
struct sqlca sqlca;
char errorMsg[1024];
/*
EXEC SQL BEGIN DECLARE SECTION;
*/
#line 29 "testdb2.sqc"
char dbAlias[15];
char user[128 + 1];
char pswd[15];
/*
EXEC SQL END DECLARE SECTION;
*/
#line 33 "testdb2.sqc"
strcpy(dbAlias, "DBEBRS");
strcpy(user, "ebcs");
strcpy(pswd, "ebcs");
if (strlen(user) > 0)
{
/*
EXEC SQL CONNECT TO :dbAlias USER :user USING :pswd;
*/
{
#line 41 "testdb2.sqc"
sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 41 "testdb2.sqc"
sqlaaloc(2,3,1,0L);
{
struct sqla_setdata_list sql_setdlist[3];
#line 41 "testdb2.sqc"
sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 15;
#line 41 "testdb2.sqc"
sql_setdlist[0].sqldata = (void*)dbAlias;
#line 41 "testdb2.sqc"
sql_setdlist[0].sqlind = 0L;
#line 41 "testdb2.sqc"
sql_setdlist[1].sqltype = 460; sql_setdlist[1].sqllen = 129;
#line 41 "testdb2.sqc"
sql_setdlist[1].sqldata = (void*)user;
#line 41 "testdb2.sqc"
sql_setdlist[1].sqlind = 0L;
#line 41 "testdb2.sqc"
sql_setdlist[2].sqltype = 460; sql_setdlist[2].sqllen = 15;
#line 41 "testdb2.sqc"
sql_setdlist[2].sqldata = (void*)pswd;
#line 41 "testdb2.sqc"
sql_setdlist[2].sqlind = 0L;
#line 41 "testdb2.sqc"
sqlasetdata(2,0,3,sql_setdlist,NULL,0L);
}
#line 41 "testdb2.sqc"
sqlacall((unsigned short)29,5,2,0,0L);
#line 41 "testdb2.sqc"
sqlastop(0L);
}
#line 41 "testdb2.sqc"
}
else
{
/*
EXEC SQL CONNECT TO :dbAlias;
*/
{
#line 45 "testdb2.sqc"
sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 45 "testdb2.sqc"
sqlaaloc(2,1,2,0L);
{
struct sqla_setdata_list sql_setdlist[1];
#line 45 "testdb2.sqc"
sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 15;
#line 45 "testdb2.sqc"
sql_setdlist[0].sqldata = (void*)dbAlias;
#line 45 "testdb2.sqc"
sql_setdlist[0].sqlind = 0L;
#line 45 "testdb2.sqc"
sqlasetdata(2,0,1,sql_setdlist,NULL,0L);
}
#line 45 "testdb2.sqc"
sqlacall((unsigned short)29,4,2,0,0L);
#line 45 "testdb2.sqc"
sqlastop(0L);
}
#line 45 "testdb2.sqc"
}
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("connect false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
printf("connect succ!\n");
}
/*
EXEC SQL SELECT id, name
INTO :id, :name
FROM tb1
WHERE id = 1;
*/
/*
SQL0204N "EBCS.TB1" is an undefined name. SQLSTATE=42704
*/
{
#line 62 "testdb2.sqc"
sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 62 "testdb2.sqc"
sqlaaloc(3,2,3,0L);
{
struct sqla_setdata_list sql_setdlist[2];
#line 62 "testdb2.sqc"
sql_setdlist[0].sqltype = 496; sql_setdlist[0].sqllen = 4;
#line 62 "testdb2.sqc"
sql_setdlist[0].sqldata = (void*)&id;
#line 62 "testdb2.sqc"
sql_setdlist[0].sqlind = 0L;
#line 62 "testdb2.sqc"
sql_setdlist[1].sqltype = 460; sql_setdlist[1].sqllen = 21;
#line 62 "testdb2.sqc"
sql_setdlist[1].sqldata = (void*)name;
#line 62 "testdb2.sqc"
sql_setdlist[1].sqlind = 0L;
#line 62 "testdb2.sqc"
sqlasetdata(3,0,2,sql_setdlist,NULL,0L);
}
#line 62 "testdb2.sqc"
sqlacall((unsigned short)24,1,0,3,0L);
#line 62 "testdb2.sqc"
sqlastop(0L);
}
#line 62 "testdb2.sqc"
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("single select false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
printf("single select: id = %-d\n", id);
}
/*
EXEC SQL DECLARE c1 CURSOR FOR
SELECT id, name
FROM tb1;
EXEC SQL OPEN c1;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
EXEC SQL FETCH c1 INTO :id, :name;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
while (sqlca.sqlcode != 100)
{
printf("mult select: id = %-d name = %s\n", id, name);
EXEC SQL FETCH c1 INTO :id, :name;
if (sqlca.sqlcode != 0 && sqlca.sqlcode != 100 )
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
break;
}
}
}
EXEC SQL CLOSE c1;
}
strcpy(strStmt,
"INSERT INTO tb1 VALUES(3, '33')");
EXEC SQL EXECUTE IMMEDIATE :strStmt;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("insert false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
EXEC SQL ROLLBACK;
}
else
{
EXEC SQL COMMIT;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("insert commit false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
printf("insert succ\n");
}
//mult select
EXEC SQL DECLARE c2 CURSOR FOR
SELECT id, name
FROM tb1;
EXEC SQL OPEN c2;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
EXEC SQL FETCH c2 INTO :id, :name;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
while (sqlca.sqlcode != 100 && sqlca.sqlcode != 100)
{
printf("mult select: id = %-d name = %s\n", id, name);
EXEC SQL FETCH c2 INTO :id, :name;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
break;
}
}
}
EXEC SQL CLOSE c2;
}
//delete
strcpy(strStmt,
"delete from tb1 where id = 3");
EXEC SQL EXECUTE IMMEDIATE :strStmt;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("delete false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
EXEC SQL ROLLBACK;
}
else
{
EXEC SQL COMMIT;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("delete commit false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
printf("delete succ\n");
}
EXEC SQL DECLARE c3 CURSOR FOR
SELECT id, name
FROM tb1;
EXEC SQL OPEN c3;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
EXEC SQL FETCH c3 INTO :id, :name;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
while (sqlca.sqlcode != 100 && sqlca.sqlcode != 100)
{
printf("mult select: id = %-d name = %s\n", id, name);
EXEC SQL FETCH c3 INTO :id, :name;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
break;
}
}
}
EXEC SQL CLOSE c3;
}
*/
/*
EXEC SQL CONNECT RESET;
*/
{
#line 230 "testdb2.sqc"
sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 230 "testdb2.sqc"
sqlacall((unsigned short)29,3,0,0,0L);
#line 230 "testdb2.sqc"
sqlastop(0L);
}
#line 230 "testdb2.sqc"
}
void SqlInfoGet(char *Msg, struct sqlca *pSqlca)
{
char sqlInfo[1024];
char sqlstateMsg[1024];
char errorMsg[1024];
int rc = 0;
strcpy(Msg, "");
if (pSqlca->sqlcode != 0 && pSqlca->sqlcode != 100)
{
if (pSqlca->sqlcode != 0)
{
sprintf(sqlInfo, "error report");
}
else
{
sprintf(sqlInfo, "warning report");
}
/* get error message */
rc = sqlaintp(errorMsg, 1024, 80, pSqlca);
if (rc > 0) /* return code is the length of the errorMsg string */
{
strcat(sqlInfo, errorMsg);
}
/* get SQLSTATE message */
rc = sqlogstt(sqlstateMsg, 1024, 80, pSqlca->sqlstate);
if (rc > 0)
{
strcat(sqlInfo, sqlstateMsg);
}
strcpy(Msg, sqlInfo);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -