2016-11-29 14 views
0

Я знаком с языком 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 (приклеивание библиотеки зависимостей на лета во время компиляции ???)

Поэтому мой вопрос: что я могу сделать, чтобы скомпилировать мой код и получить количество записей в определенной таблице?

ответ

0

У вас есть встроенный SQL в свой код C. В языке Oracle это код Pro * C, который сначала нужно запустить через предварительный компилятор для перевода встроенного SQL и/или PL/SQL в обычный C-код.

Для получения дополнительной информации см. Oracle Pro*C/C++ documentation.