DB2-C嵌入式SQL不会插入行

问题描述 投票:0回答:1

[我试图构建一个C程序来生成部分随机的字符串,然后将大量的字符串插入到循环中的db2行中,所以我需要它从嵌入式SQL中插入。

我可以进行选择查询,c编译器,db2预编译器和联编程序都可以正确执行。它甚至不让我使用硬编码变量进行插入,更不用说使用主机变量了,并且从终端行查询完全成功。

db2 "INSERT INTO
 SYT006_COUNTRY(SL_ISO2,BZ_COUNTRY,KZ_RISK)
 VALUES
 ('XY', 'wont work from embedded SQL', 'R')"

主机变量定义为char数组,并且终止符还有一个位置。平台是Ubuntu。

我尝试了一百万件事,所以这里是代码。编辑所有过时的内容

    #include <stdio.h>
    #include <string.h>
    #include <sqlca.h>
    #include <stdlib.h>
    #include <sqlenv.h>
    #include <sqlcodes.h>
    #include <sqlutil.h>
    #include <time.h>
    #include "utilemb.h"
    #include "sqlaprep.h"

    /* SQL includes */
      EXEC SQL INCLUDE SQLCA;
      EXEC SQL BEGIN DECLARE SECTION;

      EXEC SQL DECLARE     SYT006_COUNTRY TABLE
                (
                  KEYFIELD                            INT,
                  SL_ISO2                             CHAR(2) NOT NULL,
                  BZ_COUNTRY                          CHAR(30) NOT NULL,
                  KZ_RISK                             CHAR(1) NOT NULL
                ) ;


        char       hostVar[31];

      EXEC SQL END DECLARE SECTION;

    int main()
    {
      /* connect to the database REQUIRED */
    printf("Connecting to database...\n ");
    EXEC SQL CONNECT TO "sample";
    if (SQLCODE  <0)
    {
       printf("Connect Error. Code: %d\n",  sqlca.sqlcode);
    }
    else
    {
       printf("Connected to database. Code: %d\n",sqlca.sqlcode );
    }

    /* works only from command line terminal*/
      EXEC SQL
      INSERT INTO
      SYT006_COUNTRY(SL_ISO2,BZ_COUNTRY,KZ_RISK)
      VALUES
      ('XY', 'please', 'R');


    /* this one works perfectly normal*/
    /*
        EXEC SQL SELECT BZ_COUNTRY INTO :hostVar
        FROM SYT006_COUNTRY WHERE   KEYFIELD = 515;
        printf("printing hostVar: %s\n", hostVar);
    */
        printf("MAIN FINISH \n");
    return (0);
    }/*end main*/

唯一的乱序是当我从shell脚本启动db2时:

SQL5043N对DB2COMM环境变量中指定的一个或多个通信协议的支持未能成功启动。但是,核心数据库管理器功能已成功启动。SQL1063N DB2START处理成功。

我正在尝试构建一个C程序来生成部分随机的字符串,并将其大量插入到循环中的db2行中,所以我需要它从嵌入式SQL中插入...。该程序可以完成所有工作...]

c ubuntu db2 sql-insert
1个回答
0
投票

第二天再喝一杯咖啡再好不过了。嵌入式SQL程序需要以下行

EXEC SQL COMMIT;
© www.soinside.com 2019 - 2024. All rights reserved.