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

다음을 위해 개발자

이 섹션은 다음을 개발하려는 사람들을 위한 것입니다.ecpg인터페이스. 사물이 어떻게 되는지 설명합니다. 일. 야망은 이 섹션에 다음과 같은 내용을 포함시키는 것입니다. 내부와 사용 방법 섹션을 살펴보고 싶은 분 모든 일반적인 질문에는 충분합니다. 그러니 그 전에 이 글을 읽어보세요 내부를 살펴보는 중ecpg. 그것이 어떻게 이루어지는지 관심이 없다면 정말 효과가 있습니다. 이 섹션을 건너뛰세요.

할 일 목록

이 버전의 전처리기에는 몇 가지 결함이 있습니다.

문자열에만 제한 없음

PQ 인터페이스와 무엇보다도 PQexec 기능은 는에 의해 사용됩니다ecpg의존 요청은 문자열로 구성됩니다. 어떤 경우에는 다음과 같습니다. 데이터에 널 문자가 포함되어 있으면 이는 심각한 문제입니다.

오류 코드

각 항목마다 다른 오류 번호가 있어야 합니다. 모두에 대해 -1 대신 오류가 발생합니다.

라이브러리 함수

to_date 외.

기록

레코드 또는 구조는 선언에서 정의되어야 합니다. 섹션.

명세문 누락

다음 명령문은 지금까지 구현되지 않았습니다:

exec 토토 결과 유형
exec 토토 결과 준비
exec 토토 결과 할당
exec 토토 결과 무료
sqlwarning이 발생할 때마다 sql을 실행
토토 결과STATE
'데이터를 찾을 수 없음' 메시지

Exec 토토 결과 삽입 선택 시 "데이터 없음"에 대한 오류 메시지 from 문은 100이어야 합니다.

토토 결과wanr[6]

토토 결과warn[6]은 PRECISION 또는 SCALE 값인 경우 'W'여야 합니다. SET DESCRIPTOR 문에 지정된 내용은 무시됩니다.

스크립트 변환

데이터베이스를 설정하려면 테이블이 포함된 몇 가지 스크립트가 필요합니다 정의 및 기타 구성 매개변수. 만약 당신이 적용하려는 이전 데이터베이스에 대한 이러한 스크립트 그들이포스트그레스동일한 방식으로 작동하는 데이터베이스.

데이터베이스를 설정하려면 테이블이 포함된 몇 가지 스크립트가 필요합니다 정의 및 기능은 다음을 통해 수행할 수 있습니다. 일부 변환 스크립트. 속도는 결코 달성되지 않습니다. 이쪽으로. 이를 위해서는 데이터베이스에 대한 더 큰 통찰력이 필요합니다. 실현 가능한 것보다 데이터베이스의 구축 및 사용 스크립트에서.

전처리기

처음 네 줄이 출력에 기록됩니다. 댓글 2개와 2개 라이브러리 인터페이스에 필요한 줄을 포함합니다.

그런 다음 전처리기는 입력을 읽기만 한 번에 작동합니다. 파일을 작성하고 진행되는 대로 출력에 씁니다. 보통은 그냥 더 이상 살펴보지 않고 모든 것을 출력에 반영합니다.

에 관해서는EXEC 토토 결과문장 그것은 그것이 무엇인지에 따라 개입하고 변화시킵니다.EXEC 토토 결과문은 다음 중 하나일 수 있습니다:

섹션 선언

다음으로 시작하는 섹션 선언

exec 토토 결과 선언 섹션 시작;
다음으로 끝남
exec 토토 결과 end 선언 섹션;
섹션에서는 변수 선언만 허용됩니다. 매 이 섹션 내의 변수 선언은 목록에도 입력됩니다. 해당 변수와 함께 이름에 색인이 붙은 변수 유형.

선언은 파일에 반영되어 변수를 일반 C-변수도 마찬가지입니다.

특수 유형 VARCHAR 및 VARCHAR2는 모든 변수에 대해 구조체라는 이름을 붙였습니다. 다음과 같은 선언:

VARCHAR 변수[180];
다음으로 변환됩니다
struct varchar_var  int len; 문자 arr[180];  변수;
문 포함

include 문은 다음과 같습니다:

exec sql include 파일 이름;
다음으로 변환됩니다
#include <파일 이름.h
연결 문

연결 문은 다음과 같습니다:

exec 토토 결과 연결 '데이터베이스';
그 진술은 다음으로 변환됩니다.
ECPGconnect("데이터베이스");
커서 문 열기

열린 커서 명령문은 다음과 같습니다:

exec 토토 결과 열기커서;
무시되며 출력에서 복사되지 않습니다.
커밋 문

커밋 문은 다음과 같습니다.

exec 토토 결과 커밋;
그리고 출력에서 다음으로 번역됩니다.
ECPG커밋(__LINE__);
롤백 문

롤백 문은 다음과 같습니다

exec 토토 결과 롤백;
그리고 출력에서 다음으로 번역됩니다.
ECPGrollback(__LINE__);
기타 진술

기타토토 결과문이 기타입니다. 로 시작하는 진술exec 토토 결과그리고 다음으로 끝남;. 그 사이의 모든 것은 로 처리됨토토 결과문장 및 변수 대체를 위해 구문 분석되었습니다.

기호가 다음으로 시작하면 변수 대체가 발생합니다. 콜론(:). 그런 다음 그 변수 이전에 선언된 변수 중에서 이름이 발견되었습니다. 선언 섹션 내에서 그리고 여부에 따라토토 결과진술은 그것이 입력 또는 출력을 위한 변수 변수에 대한 포인터는 다음과 같습니다. 함수에 의한 액세스를 허용하기 위해 출력에 기록됩니다.

다음의 일부인 모든 변수에 대해토토 결과함수를 요청하면 추가로 5개를 얻습니다. 인수:

특수 기호로서의 유형
값에 대한 포인터
varchar인 경우 변수의 크기
배열의 요소 수(배열의 경우) 가져오기)
배열의 다음 요소에 대한 오프셋(배열의 경우) 가져오기)

배열 가져오기가 아직 구현되지 않았으므로 마지막 두 개는 논쟁은 그다지 중요하지 않습니다. 그들은 아마도 그럴 수도 있었을 것이다 제외되었습니다.

완료 예시

다음은 출력을 설명하는 완전한 예입니다. 전처리기:

exec sql 시작 선언 섹션;
정수 인덱스;
정수 결과;
exec 토토 결과 end 선언 섹션;
...
    exec sql select res into :result from mytable where index = :index;
다음으로 번역됩니다:
/* 이 두 개의 포함 파일은 전처리기에 의해 추가됩니다 */
#include <ecpgtype.h
#include <ecpglib.h
/* exec sql 선언 섹션 시작 */

 정수 인덱스;
 정수 결과;
/* exec sql 선언 섹션 끝 */

...
    ECPGdo(__LINE__, "인덱스 = ;;인 mytable에서 res를 선택하세요.", 
           ECPGt_int,&index,0,0,sizeof(int), 
           ECPGt_EOIT, 
           ECPGt_int,&result,0,0,sizeof(int), 
           ECPGt_EORT );
(이 설명서의 들여쓰기는 가독성을 위해 추가되었으며 전처리기가 할 수 있는 일이 아닙니다.)

도서관

라이브러리에서 가장 중요한 기능은 다음과 같습니다.ECPGdo함수. 다양한 양의 비용이 소요됩니다. 인수. 우리는 제한이 있는 기계를 만나지 않기를 바랍니다. varchar 함수가 허용할 수 있는 변수의 양. 이렇게 하면 최대 50개 정도의 인수를 쉽게 추가할 수 있습니다.

인수는 다음과 같습니다:

줄 번호

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

문자열

이것은토토 결과요청은 발급됩니다. 이 요청은 입력 변수에 의해 수정됩니다. 즉, 컴파일 타임에는 알려지지 않았지만 다음과 같은 변수가 있습니다. 요청에 입력됩니다. 변수는 어디로 가야합니까? 문자열에는 ";"이 포함되어 있습니다.

입력 변수

전처리기에 대한 섹션에 설명된 대로 입력 변수는 5개의 인수를 얻습니다.

ECPGt_EOIT

더 이상 입력 변수가 없음을 알려주는 열거형입니다.

출력 변수

전처리기에 대한 섹션에 설명된 대로 입력 변수는 5개의 인수를 얻습니다. 이 변수는 채워져 있습니다. 기능으로.

ECPGt_EORT

더 이상 변수가 없음을 알려주는 열거형입니다.

모두토토 결과문장은 다음과 같습니다 커밋 트랜잭션을 실행하지 않는 한 하나의 트랜잭션에서 수행됩니다. 이는 첫 번째 거래 또는 이후 첫 번째 거래가 이루어지도록 작동합니다. 커밋 또는 롤백은 항상 트랜잭션을 시작합니다.

완료 예정: 다른 항목을 설명하는 항목.