이 섹션에서는 방법을 설명합니다.ecpg내부적으로 작동합니다. 이 정보는 때때로 다음과 같은 경우에 유용할 수 있습니다. 사용자가 사용 방법을 이해하도록 돕습니다.ecpg.
처음 네 줄은 다음에 의해 작성되었습니다.ecpg출력은 고정된 라인입니다. 두 개는 주석과 두 개는 인터페이스에 필요한 포함 라인입니다. 도서관. 그런 다음 전처리기는 파일을 읽고 출력을 씁니다. 일반적으로 모든 내용을 출력.
그것이 보일 때EXEC 토토성명, 그것은 개입하고 그것을 변화시킵니다. 명령은로 시작합니다.exec 토토다음으로 끝남;. 그 사이의 모든 것은토토문 및 구문 분석됨 변수 대체.
기호가 다음으로 시작하면 변수 대체가 발생합니다. 콜론(:). 해당 이름을 가진 변수 이전에 선언된 변수 중에서 조회됩니다. a 이내EXEC 토토 선언섹션. 변수가 입력에 사용되는지 아니면 변수에 사용되는지에 따라 출력, 변수에 대한 포인터가 출력되어 액세스를 허용합니다. 기능.
다음의 일부인 모든 변수에 대해토토쿼리, 함수는 다른 것을 얻습니다 인수:
특수 기호로서의 유형.
값에 대한 포인터 또는 포인터에 대한 포인터.
변수의 크기문자또는varchar.
배열의 요소 수(배열의 경우) 가져오기).
배열의 다음 요소에 대한 오프셋(배열의 경우) 가져오기).
특수 변수로서의 표시 변수 유형 기호.
표시 변수 값에 대한 포인터 또는 표시 변수의 포인터에 대한 포인터입니다.
0
표시기 배열의 요소 수(배열의 경우) 가져오기).
표시 배열의 다음 요소에 대한 오프셋 (배열 가져오기용).
모든 토토 명령이 이런 방식으로 처리되는 것은 아닙니다. 에 대한 예를 들어, 다음과 같은 열린 커서 문입니다.
EXEC 토토 OPEN커서;
은 출력에 복사되지 않습니다. 대신 커서의선언명령이 사용되는 이유는 다음과 같습니다. 커서도 열립니다.
다음은 출력을 설명하는 완전한 예입니다. 파일의 전처리기foo.pgc(세부 사항은 각 특정 버전에 따라 변경될 수 있습니다. 전처리기):
EXEC 토토 시작 선언 섹션; 정수 인덱스; 정수 결과; EXEC 토토 END 선언 섹션; ... EXEC 토토 SELECT res INTO :result FROM mytable WHERE 인덱스 = :index;
다음으로 번역됩니다:
/* ecpg(2.6.0)에 의해 처리됨 */
/* 이 두 개의 포함 파일은 전처리기에 의해 추가됩니다 */
#include <ecpgtype.h;
#include <ecpglib.h;
/* exec sql 선언 섹션 시작 */
#라인 1 "foo.pgc"
정수 인덱스;
정수 결과;
/* exec sql 선언 섹션 끝 */
...
ECPGdo(__LINE__, NULL, "SELECT res FROM mytable WHERE 인덱스 = ? ",
ECPGt_int,&(색인),1L,1L,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
ECPGt_int,&(결과),1L,1L,sizeof(int),
ECPGt_NO_INDICATOR, NULL, 0L, 0L, 0L, ECPGt_EORT);
#line 147 "foo.pgc"
(이 설명서의 들여쓰기는 가독성을 위해 추가되었으며 전처리기가 하는 일이 아닙니다.)
라이브러리에서 가장 중요한 기능은ECPGdo. 다양한 숫자가 필요합니다.
인수. 다행히도 제한을 두는 컴퓨터는 없습니다.
a에서 허용할 수 있는 변수의 수varargs()함수. 이것은 쉽게 추가될 수 있습니다
인수가 50개 정도입니다.
인수는 다음과 같습니다:
이것은 원래 줄의 줄 번호입니다. 에 사용 오류 메시지만 해당됩니다.
이것은토토발행될 쿼리입니다. 입력에 의해 수정됩니다. 변수, 즉 알려지지 않은 변수 컴파일 시간이 필요하지만 쿼리에 입력해야 합니다. 어디에 변수는 문자열에 포함되어야 합니다.?.
전처리기에 관한 섹션에 설명된 대로, 모든 입력 변수는 10개의 인수를 갖습니다.
ECPGt_EOIT안열거형다음이 있다고 말해요 더 이상 입력 변수가 없습니다.
전처리기에 대한 섹션에 설명된 대로, 모든 입력 변수는 10개의 인수를 갖습니다. 이들 변수 함수로 채워집니다.
ECPGt_EORT안열거형다음이 있다고 말해요 더 이상 변수가 없습니다.