Я знаком с языком Oracle PL/SQL и C/C++, и я могу написать код, который извлекает данные из базы данных и выводит результат в консольный/командный/выходной поток /и т.д.CXX-E-UNDECLARED, идентификатор «exec» не определен
Однако я не знаком с разработкой openVMS. Но я был в состоянии проверить, что CXX
компилятор (встроенный в операционную систему) работает после компиляции/связывания и выполнив следующий код:
#include <stdio.h>
void main(void) {
printif("Hello World!\n");
}
Теперь я пытался изо всех сил, чтобы подключиться к базе данных Oracle (который установлен на том же сервере, и есть много других файлов C/CP, написанных для извлечения данных из db, и они отлично работают), но я не смог скомпилировать код, который пытается прочитать из базы данных. Для простоты здесь код, который пытался получить доступ к базе данных:
#include<stdio.h>
void main(void) {
int cnt = -1;
exec sql SELECT count(*) INTO :cnt FROM EMPLOYEES;
printif("Number of employees: %d", cnt);
}
Когда я компилирую, что я получаю:
%CXX-E-UNDECLARED, identifier "exec" is undefined
На первом, я подумал, что, возможно, отсутствует библиотеки в рамках заголовок, поэтому я попытался следующее:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#ifdef PC
#include <fcntl.h>
#else
#include <unixio.h>
#include <file.h>
#endif
#include <ctype.h>
, но ни один из выше библиотек не вызывают компилятор прекратить жаловаться на exec sql
statetment.
Я поступил в технические документы Oracle о написании программ на OpenVMS и нашел пример кода, который включает в себя <sqlca.h>
и другие, такие как <sql_sqlda.h>
, но ни одна из них не решила мою проблему.
Я предполагаю, может быть другие файлы Си, написанные до того как-то компилируется с специальной командой, которая ухаживает заявление EXEC SQL (приклеивание библиотеки зависимостей на лета во время компиляции ???)
Поэтому мой вопрос: что я могу сделать, чтобы скомпилировать мой код и получить количество записей в определенной таблице?