Я сейчас пытаюсь сделать простое «создание таблицы» C - встроенное sql приложение с g cc.
My sq c код файла:
#include <stdio.h>
#include <string.h>
#include <sqlca.h>
/* CREATE A DATABASE TABLE FOR TESTING COBOL-C-DB2 */
/* SQL includes */
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;
int main()
{
EXEC SQL CREATE TABLE SYT006_COUNTRY(
KEYFIELD INT NOT NULL,
SL_ISO2 CHAR(2) NOT NULL,
BZ_COUNTRY CHAR(30) NOT NULL,
KZ_RISK CHAR(1) NOT NULL,
PRIMARY KEY (KEYFIELD)
);
return (0);
}
db2 prep создает файл C, в случае указания пути в g cc для папки включения DB2, например, работает строка #include "sqladef.h".
В ре написанная основная функция, однако она вызывает три функции, которые я не могу найти в заголовках:
#line 25 "create_table.sqc"
sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 25 "create_table.sqc"
sqlacall((unsigned short)24,1,0,0,0L);
#line 25 "create_table.sqc"
sqlastop(0L);
и сообщает об ошибке:
undefined reference to `sqlastrt'
И после записи -Wl в g cc строка для связывания чего-либо с чем-то, теперь я получаю сообщение об ошибке:
/usr/bin/ld: cannot find : No such file or directory
collect2: error: ld returned 1 exit status
мой скрипт
db2start
db2 connect to sample
db2 prep create_table.sqc bindfile
db2 bind create_table.bnd
gcc -Wl, -Wimplicit -fno-stack-protector -trigraphs create_table.c -o runner -
I/home/nikica/sqllib/include
./runner
Исполняемый файл "runner" не создан