Я пытаюсь создать C программу для генерации частично случайных строк и вставки большого количества их в строки db2 в al oop, поэтому мне нужно вставить ее из встроенной SQL .... Программа делает все, кроме вставок.
Я могу сделать запрос на выборку, c компилятор, прекомпилятор db2 и связыватель - все выполняются без ошибок. Он даже не позволяет мне делать вставку с жестко закодированными переменными, не говоря уже о переменных хоста, и запрос совершенно успешно выполняется из строки терминала
db2 "INSERT INTO
SYT006_COUNTRY(SL_ISO2,BZ_COUNTRY,KZ_RISK)
VALUES
('XY', 'wont work from embedded SQL', 'R')"
Переменные хоста, определенные как массивы символов с еще одной позицией для терминатора. Платформа - 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*/
Единственное, что выходит из строя, это когда я запускаю db2 из моего сценарий оболочки:
SQL5043N Не удалось запустить поддержку одного или нескольких протоколов связи, указанных в переменной среды DB2COMM. Однако основные функции менеджера баз данных запущены успешно. SQL1063N Обработка DB2START прошла успешно.