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

4.11. 개발자용

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

4.11.1. 는 전처리기

처음 네 줄은 다음에 의해 작성되었습니다.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"

(이 설명서의 들여쓰기는 가독성을 위해 추가되었으며 전처리기가 하는 일이 아닙니다.)

4.11.2. 는 도서관

라이브러리에서 가장 중요한 기능은ECPGdo. 다양한 숫자가 필요합니다. 인수. 다행히도 제한을 두는 컴퓨터는 없습니다. a에서 허용할 수 있는 변수의 수varargs()함수. 이것은 쉽게 추가될 수 있습니다 인수가 50개 정도입니다.

인수는 다음과 같습니다:

줄 번호

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

문자열

이것은토토발행될 쿼리입니다. 입력에 의해 수정됩니다. 변수, 즉 알려지지 않은 변수 컴파일 시간이 필요하지만 쿼리에 입력해야 합니다. 어디에 변수는 문자열에 포함되어야 합니다.?.

입력 변수

전처리기에 관한 섹션에 설명된 대로, 모든 입력 변수는 10개의 인수를 갖습니다.

ECPGt_EOIT

열거형다음이 있다고 말해요 더 이상 입력 변수가 없습니다.

출력 변수

전처리기에 대한 섹션에 설명된 대로, 모든 입력 변수는 10개의 인수를 갖습니다. 이들 변수 함수로 채워집니다.

ECPGt_EORT

열거형다음이 있다고 말해요 더 이상 변수가 없습니다.