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