2016-11-29 1 views
0

Oracle PL/SQL 및 C/C++ 언어에 익숙하며 데이터베이스에서 데이터를 가져 와서 결과를 콘솔/명령/출력 스트림으로 출력하는 코드를 작성할 수 있습니다. /기타.CXX-E-UNDECLARED 식별자 "exec"가 정의되지 않았습니다.

그러나 openVMS 개발에 익숙하지 않습니다. 하지만 (운영 체제에 내장), CXX 컴파일러/컴파일 연결 및 다음 코드를 실행 한 후 작동하는지 확인 할 수 있었다 : 이제

#include <stdio.h> 
void main(void) { 
    printif("Hello World!\n"); 
} 

을, 나는 (오라클 데이터베이스에 연결하기 위해 최선에 노력 동일한 서버에 설치되어 있고 다른 C/CP 파일을 데이터베이스에서 끌어 오기 위해 작성된 및 잘 작동합니다.),하지만 데이터베이스에서 읽으려고 모든 코드를 컴파일 할 수 없습니다. 나는 것을 컴파일 할 때

#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에 대해 불평 중지 발생하지 : 헤더, 그래서 나는 다음 시도했다.

openVMS에서 C 프로그램을 작성하는 것에 대한 오라클 기술 문서를 살펴본 결과 <sqlca.h><sql_sqlda.h> 등의 샘플 코드가 있지만 그 중 아무 것도 내 문제를 해결하지 못했습니다.

내가 생각하고

,

(??? 컴파일시에 즉석에서 종속 라이브러리를 부착하여) 어떻게 든 EXEC SQL 문을 담당 특별 명령으로 컴파일 이전에 작성된 다른 C 파일을 할 수있다 그래서 내 질문은 : 내 코드를 컴파일하고 특정 테이블의 레코드 수를 얻으려면 어떻게해야합니까?

답변

0

C 코드에는 내장 된 SQL이 있습니다. 오라클 용어로 이것은 Pro * C 코드입니다. 먼저 Embedded SQL 및/또는 PL/SQL을 일반 C 코드로 변환하기 위해 사전 컴파일러를 통해 실행해야합니다.

자세한 내용은 Oracle Pro*C/C++ documentation을 참조하십시오.

관련 문제