이 섹션을 설명하는 방법ecpg내부적으로 작동합니다. 이 정보는 때때로 유용 할 수 있습니다 사용자가 사용 방법을 이해하도록 돕습니다ECPG.
처음 4 줄에 의해 작성되었습니다ECPG출력은 고정 라인입니다. 둘은 주석과 두 가지는 인터페이스하는 데 필요한 줄이 포함되어 있습니다. 도서관. 그런 다음 전처리 기는 파일을 통해 읽습니다 출력을 씁니다. 일반적으로 그것은 단지 모든 것을 반향합니다 산출.
그것이 볼 때Exec 토토진술, 개입하고 변경합니다. 명령은로 시작합니다.Exec 토토;. 그 사이의 모든 것은로 취급됩니다.토토진술 및 구문 분석 가변 대체.
가변 치환은 기호가 a로 시작할 때 발생합니다 결장 (:). 그 이름을 가진 변수 이전에 선언 된 변수 중에서 찾아 보았습니다. A 내에서Exec 토토 선언섹션. 토토가 입력에 사용되는지 여부에 따라 출력, 토토에 대한 포인터는 액세스를 허용하는 출력입니다. 함수.
의 일부인 모든 토토에 대해토토쿼리, 함수는 다른 기능을 얻습니다 인수 :
특수 기호로 유형.
값에 대한 포인터 또는 포인터에 대한 포인터.
토토가 a의 크기입니다.char또는varchar.
배열의 요소 수 (배열의 경우 가져 오기).
배열의 다음 요소로의 오프셋 (배열 용. 가져 오기).
특별한 지표 토토의 유형 상징.
지표 변수 또는 a의 값에 대한 포인터 지표 변수의 포인터에 대한 포인터.
0
표시기 배열의 요소 수 (배열 가져 오기).
표시기 배열의 다음 요소로의 오프셋 (배열 가져 오기).
모든 토토 명령이 이러한 방식으로 처리되는 것은 아닙니다. 을 위한 인스턴스, 개방형 커서 문과 같은
Exec 토토 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"
(이 매뉴얼의 들여 쓰기는 가독성과 전처리자가하는 일이 아닙니다.)
라이브러리에서 가장 중요한 기능은입니다.ecpgdo
. 가변 수의 수가 필요합니다
논쟁. 바라건대 제한하는 컴퓨터가 없기를 바랍니다
a에 의해 받아 들일 수있는 토토 수varargs ()
함수. 이것은 쉽게 추가 할 수 있습니다
50 정도의 논쟁.
인수는 다음과 같습니다.
이것은 원래 줄의 줄 번호입니다. 사용 오류 메시지 만.
이것이토토발급 될 쿼리. 입력에 의해 수정됩니다 변수, 즉 알지 못하는 변수 시간을 컴파일하지만 쿼리에 입력해야합니다. 어디 변수는 문자열이 포함되어야합니다?.
사전 처리기에 관한 섹션에 설명 된대로, 모든 입력 토토는 10 개의 인수를 얻습니다.
ecpgt_eoit
anenum더 이상 입력 토토가 없습니다.
사전 처리기에 관한 섹션에 설명 된대로, 모든 입력 토토는 10 개의 인수를 얻습니다. 이 변수 함수에 의해 채워집니다.
ecpgt_eort
anenum더 이상 토토가 없습니다.