이 문서는 지원되지 않는 Postgre스포츠 토토 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 캔 : 문서 : 17 : 34.17. 토토 캔버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

33.16. 내부

이 섹션에서는 방법을 설명합니다.ECPG내부적으로 작동합니다. 이 정보는 때때로 다음과 같은 경우에 유용할 수 있습니다. 사용자가 사용 방법을 이해하도록 돕습니다.ECPG.

처음 네 줄은 다음에 의해 작성되었습니다.ecpg에 출력은 고정 라인입니다. 두 개는 주석이고 두 개는 포함입니다. 라이브러리에 인터페이스하는 데 필요한 라인. 그런 다음 전처리기 파일을 읽고 출력을 씁니다. 보통은 그냥 울려퍼지는데 모든 것을 출력합니다.

다음을 볼 때EXEC 스포츠 토토진술, 그것은 개입하여 변화시킵니다. 명령은로 시작합니다.EXEC 스포츠 토토다음으로 끝남;. 그 사이의 모든 것은스포츠 토토문 및 변수에 대해 구문 분석됨 대체.

기호가 콜론으로 시작하면 변수 대체가 발생합니다. (:). 해당 이름을 가진 변수가 검색됩니다. 이전에 a 내에서 선언된 변수 중에서EXEC 스포츠 토토 선언섹션.

라이브러리에서 가장 중요한 기능은ECPGdo, 대부분의 실행을 담당합니다. 명령. 다양한 수의 인수가 필요합니다. 이것은 쉽게 할 수 있습니다 최대 50개 정도의 인수를 추가하면 이것이 문제가 되지 않기를 바랍니다. 모든 플랫폼에서 문제가 발생합니다.

인수는 다음과 같습니다:

행 번호

이것은 원래 줄의 줄 번호입니다. 오류로 사용됨 메시지만 해당됩니다.

문자열

이것은스포츠 토토명령하세요 발급 예정입니다. 이는 입력 변수에 의해 수정됩니다. 컴파일 타임에는 알려지지 않았지만 알려지게 될 변수 명령에 입력되었습니다. 변수가 문자열로 이동해야 하는 위치 포함?.

입력 변수

모든 입력 변수는 10개의 인수를 생성합니다. (참조 아래.)

ECPGt_EOIT

열거형더 이상은 없다고 말해요 입력 변수.

출력 변수

모든 출력 변수는 10개의 인수를 생성하게 합니다. (참조 아래.) 이 변수는 함수에 의해 채워집니다.

ECPGt_EORT

열거형더 이상은 없다고 말해요 변수.

다음의 일부인 모든 변수에 대해스포츠 토토명령, 함수는 10을 얻습니다. 인수:

  1. 특수 기호로서의 유형.

  2. 값에 대한 포인터 또는 포인터에 대한 포인터.

  3. 변수의 크기문자또는varchar.

  4. 배열의 요소 수(배열 가져오기용).

  5. 배열의 다음 요소에 대한 오프셋(배열의 경우) 가져오기).

  6. 특수 기호로 표시 변수의 유형.

  7. 표시 변수에 대한 포인터.

  8. 0

  9. 표시기 배열의 요소 수(배열의 경우) 가져오기).

  10. 표시기 배열의 다음 요소에 대한 오프셋(배열의 경우) 가져오기).

모든 스포츠 토토 명령이 이런 방식으로 처리되는 것은 아닙니다. 에 대한 예를 들어 다음과 같은 열린 커서 문입니다.

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"

(여기서 들여쓰기는 가독성을 위해 추가된 것이지 어떤 것이 아닙니다. 전처리기가 그렇게 합니다.)