이 섹션에서는 방법을 설명합니다.ECPG내부적으로 작동합니다. 이 정보는 때때로 사용자가 사용 방법을 이해하는 데 도움이 될 수 있습니다.ECPG.
처음 네 줄은 다음에 의해 작성되었습니다.ecpg출력은 고정된 라인입니다. 두 개는 주석이고 두 개는 라이브러리에 인터페이스하는 데 필요한 포함 라인입니다. 그런 다음 전처리기는 파일을 읽고 출력을 씁니다. 일반적으로 모든 내용을 출력에 반영합니다.
다음을 볼 때EXEC SQL문장에 개입하여 변경합니다. 명령은로 시작합니다.EXEC SQL다음으로 끝남;. 그 사이의 모든 것은SQL문과 토토 사이트 순위 대체를 위해 구문 분석되었습니다.
기호가 콜론()으로 시작하면 토토 사이트 순위 대체가 발생합니다.:). 해당 이름을 가진 변수는 이전에 a 내에서 선언된 변수 중에서 조회됩니다.EXEC SQL 선언섹션.
라이브러리에서 가장 중요한 기능은ECPGdo, 대부분의 명령 실행을 담당합니다. 다양한 수의 인수가 필요합니다. 이렇게 하면 최대 50개 정도의 인수를 쉽게 추가할 수 있으며 어떤 플랫폼에서도 문제가 되지 않기를 바랍니다.
인수는 다음과 같습니다:
이것은 원래 줄의 줄 번호입니다. 오류 메시지에만 사용됩니다.
이것은SQL발행될 명령입니다. 이는 입력 토토 사이트 순위, 즉 컴파일 타임에는 알려지지 않았지만 명령에 입력되는 변수에 의해 수정됩니다. 변수가 어디로 가야하는지 문자열에는 다음이 포함됩니다.?.
모든 입력 토토 사이트 순위는 10개의 인수를 생성합니다. (아래를 참조하세요.)
ECPGt_EOIT안열거형더 이상 입력 토토 사이트 순위가 없다고 말합니다.
모든 출력 토토 사이트 순위는 10개의 인수를 생성하게 합니다. (아래를 참조하세요.) 이 변수는 함수에 의해 채워집니다.
ECPGt_EORT안열거형더 이상 토토 사이트 순위가 없다고 말합니다.
다음의 일부인 모든 변수에 대해SQL명령, 함수는 10개의 인수를 얻습니다:
특수 기호로서의 유형.
값에 대한 포인터 또는 포인터에 대한 포인터.
토토 사이트 순위의 크기문자또는varchar.
배열의 요소 수(배열 가져오기용).
배열의 다음 요소에 대한 오프셋(배열 가져오기용).
특수 기호로 표시 토토 사이트 순위의 유형.
표시 토토 사이트 순위에 대한 포인터.
0
표시 배열의 요소 수(배열 가져오기용).
표시 배열의 다음 요소에 대한 오프셋(배열 가져오기용).
모든 SQL 명령이 이런 방식으로 처리되는 것은 아닙니다. 예를 들어 다음과 같은 열린 커서 문은 다음과 같습니다.
EXEC SQL OPEN커서;
은 출력에 복사되지 않습니다. 대신 커서의선언명령은의 위치에서 사용됩니다.열기명령은 실제로 커서를 열기 때문입니다.
다음은 파일 전처리기의 출력을 설명하는 완전한 예입니다.foo.pgc(세부사항은 전처리기의 각 특정 버전에 따라 변경될 수 있음):
EXEC SQL 시작 선언 섹션; 정수 인덱스; 정수 결과; EXEC SQL END 선언 섹션; ... EXEC SQL 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"
(여기서 들여쓰기는 가독성을 위해 추가된 것이며 전처리기가 수행하는 작업이 아닙니다.)