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

📄 testdb2.c

📁 转发交易接口
💻 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 + -