이 문서는 지원되지 않는 버전의 Postgre토토 사이트을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다토토 사이트 캔 : 문서 : 17 : 34.17. 토토 사이트 캔버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

29.13. 내부

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

처음 4 줄에 의해 작성되었습니다ECPG출력에는 고정 라인이 있습니다. 두 개는 의견이며 두 개는입니다 라이브러리 인터페이스에 필요한 줄을 포함하십시오. 그럼 사전 처리기는 파일을 읽고 출력을 씁니다. 보통 그것은 단지 모든 것을 출력에 반향합니다.

Exec 토토 사이트진술, 개입하고 변경합니다. 명령은로 시작합니다.Exec 토토 사이트로 끝나고;. 그 사이의 모든 것은로 취급됩니다.토토 사이트진술 및 변수에 대한 구문 분석 치환.

가변 대체는 기호가 결장으로 시작할 때 발생합니다. (:). 해당 이름의 변수는입니다 이전에 선언 된 변수 중에서 찾았습니다 A 내에서Exec 토토 사이트 선언섹션.

라이브러리에서 가장 중요한 기능은입니다.ecpgdo명령. 가변적인 수의 인수가 필요합니다. 이것은 할 수 있습니다 쉽게 50 정도의 논쟁을 추가하면 이것이 그렇지 않기를 바랍니다. 모든 플랫폼의 문제.

인수는 다음과 같습니다.

줄 번호

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

문자열

이것이토토 사이트발행 될 명령. 입력에 의해 수정됩니다 변수, 즉 알지 못하는 변수 시간을 컴파일하지만 명령에 입력해야합니다. 어디 변수는 문자열이 포함되어야합니다?.

입력 변수

모든 입력 변수로 인해 10 개의 인수가 생성됩니다. (아래 참조)

ecpgt_eoit

anenum더 많은 입력 변수.

출력 변수

모든 출력 변수로 인해 10 개의 인수가 발생합니다 생성. (아래 참조)이 변수는 다음으로 채워집니다 기능.

ecpgt_eort

anenum더 많은 변수.

의 일부인 모든 변수에 대해토토 사이트명령, 함수는 10을 얻습니다 인수 :

  1. 특수 기호로 유형.

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

  3. 변수의 크기는입니다.char또는Varchar.

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

  5. 배열의 다음 요소로의 오프셋 (배열 용. 가져 오기).

  6. 특별한 지표 변수의 유형 상징.

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

  8. 0

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

  10. 표시기 배열의 다음 요소로의 오프셋 (for 배열 가져 오기).

모든 토토 사이트 명령이 이러한 방식으로 처리되는 것은 아닙니다. 을 위한 인스턴스, 개방형 커서 문과 같은

Exec 토토 사이트 Open커서;

는 출력에 복사되지 않습니다. 대신, 커서의선언명령은의 위치에서 사용됩니다.Open실제로 열기 때문에 명령 커서.

다음은 다음의 출력을 설명하는 완전한 예입니다. 파일의 전처리foo.pgc(세부 사항 전처리 기의 특정 버전으로 변경 될 수 있습니다) :

Exec 토토 사이트 시작 선언 섹션;
int index;
int 결과;
Exec 토토 사이트 END DELLARE SECTION;
...
exec sql res를 선택하십시오 : mytable에서 결과적으로 index = : index;

로 번역됩니다.

/ * ECPG에 의해 처리 됨 (2.6.0) */
/ *이 두 포함 파일은 사전 처리기에 의해 추가됩니다 */
#include <ecpgtype.h;
#include <ecpglib.h;

/ * EXEC 토토 사이트 시작 선언 섹션 */

#line 1 "foo.pgc"

 int index;
 int 결과;
/ * EXEC 토토 사이트 종료 선언 섹션 */
...
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"

(여기서의 들여 쓰기는 가독성을 위해 추가됩니다 전처리자가하는 일.)