이 섹션은 방법을 설명합니다ECPG내부적으로 작동합니다. 이 정보는 때때로 사용자가 사용 방법을 이해하는 데 도움이 될 수 있습니다ECPG.
처음 4 줄에 의해 작성되었습니다ECPG
출력은 고정 라인입니다. 두 개는 주석이며 2 개는 라이브러리 인터페이스에 필요한 줄이 포함되어 있습니다. 그런 다음 전처리 기는 파일을 읽고 출력을 씁니다. 일반적으로 그것은 모든 것을 출력에 반향합니다.
Exec SQL
진술, 개입하고 변경합니다. 명령은로 시작합니다.Exec SQL
;
. 그 사이의 모든 것은로 취급됩니다.SQL진술 및 배트맨 토토 대체에 대한 구문 분석.
배트맨 토토 대체는 기호가 결장으로 시작할 때 발생합니다 (:
). 해당 이름의 변수는 이전에 a 내에서 선언 된 변수들 사이에서 위로 올라갑니다.Exec SQL 선언
섹션.
라이브러리에서 가장 중요한 기능은입니다.ecpgdo
, 대부분의 명령을 실행하는 것을 관리합니다. 가변적인 수의 인수가 필요합니다. 이것은 쉽게 50 정도의 인수를 추가 할 수 있으며, 이것이 어떤 플랫폼에서도 문제가되지 않기를 바랍니다.
인수는 다음과 같습니다.
이것은 원래 줄의 줄 번호입니다. 오류 메시지에만 사용됩니다.
이것은입니다.SQL발행 될 명령. 입력 배트맨 토토, 즉 컴파일 시간에 알려지지 않았지만 명령에 입력 해야하는 변수에 의해 수정됩니다. 변수가 가야하는 곳에 문자열에 포함되어 있습니다?
.
모든 입력 배트맨 토토로 인해 10 개의 인수가 생성됩니다. (아래 참조)
ecpgt_eoit
anenum
더 이상 입력 배트맨 토토가 없다고 말합니다.
모든 출력 배트맨 토토로 인해 10 개의 인수가 생성됩니다. (아래 참조)이 변수는 함수에 의해 채워집니다.
ecpgt_eort
anenum
더 이상 배트맨 토토가 없다고 말합니다.
SQL명령, 함수는 10 개의 인수를 가져옵니다 :
특수 기호로 유형.
값 또는 포인터에 대한 포인터에 대한 포인터.
배트맨 토토 인 경우 배트맨 토토의 크기char
또는Varchar
.
배열의 요소 수 (배열 페치 용).
배열의 다음 요소로의 오프셋 (배열 페치 용).
특수 기호로서 표시기 배트맨 토토의 유형.
지표 배트맨 토토에 대한 포인터.
0
표시기 배열의 요소 수 (배열 페치 용).
표시기 배열의 다음 요소로의 오프셋 (배열 페치 용).
모든 SQL 명령이 이러한 방식으로 처리되는 것은 아닙니다. 예를 들어 :과 같은 열린 커서 문화
Exec SQL Open커서
;
는 출력에 복사되지 않습니다. 대신, 커서의선언
명령은의 위치에서 사용됩니다.Open
실제로 커서를 열기 때문에 명령.
파일 전처리 자의 출력을 설명하는 완전한 예foo.pgc
(세부 사항은 사전 처리기의 각 버전에서 변경 될 수 있음) :
Exec SQL 시작 선언 섹션; int index; int 결과; Exec SQL END DELLARE SECTION; ... exec sql res를 선택하십시오 : mytable에서 결과적으로 index = : index;
로 번역됩니다 :
/ * ECPG에 의해 처리 됨 (2.6.0) */ / *이 두 포함 파일은 사전 처리기에 의해 추가됩니다 */ #include <ecpgtype.h; #include <ecpglib.h; / * EXEC SQL 시작 선언 섹션 */ #line 1 "foo.pgc" int index; int 결과; / * EXEC SQL 종료 선언 섹션 */ ... ecpgdo (__ line__, null, "mytable에서 reS를 선택하여 index =?", 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"
(여기서의 인기는 가독성을 위해 추가되어 전처리가하는 일이 아닙니다.)
문서에 올바른 것이 없다면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면