| Postgre윈 토토 9.0.23 문서 | ||||
|---|---|---|---|---|
| 롤 토토 PostgreSQL : 문서 : 9.0 : PGTYPES 라이브러리 | 토토 : 문서 : 9.0 : ECPG- C에 포함 된 SQL | 33장.ECPG- 삽입됨윈 토토C에서 | 다음 | |
윈 토토 설명자 영역은 다음을 위한 보다 정교한 방법입니다. a의 결과를 처리하는 중선택, 가져오기또는설명문장. 윈 토토 설명자 영역 그룹 한 행의 데이터를 메타데이터 항목과 함께 하나로 데이터 구조. 메타데이터는 다음과 같은 경우에 특히 유용합니다. 동적 윈 토토 문을 실행합니다. 여기서 결과의 성격은 다음과 같습니다. 열은 미리 알려지지 않을 수 있습니다. Postgre윈 토토은 두 가지를 제공합니다. 설명자 영역을 사용하는 방법: 명명된 윈 토토 설명자 영역 및 C 구조 윈 토토DA.
명명된 윈 토토 설명자 영역은 헤더로 구성됩니다. 전체 설명자에 관한 정보를 포함하며, 또는 기본적으로 각각 설명하는 더 많은 항목 설명 영역 결과 행에 하나의 열이 있습니다.
윈 토토 설명자 영역을 사용하기 전에 다음을 수행해야 합니다. 하나를 할당하십시오:
EXEC 윈 토토 할당 설명자식별자;
식별자는 다음 역할을 합니다."변수 이름"11704_11804
EXEC 윈 토토 할당 해제 설명자식별자;
설명 영역을 사용하려면 이를 저장 대상으로 지정하십시오 에서INTO절, 나열 대신 호스트 변수:
EXEC 윈 토토 FETCH NEXT FROM FROM FROM FROM INTO 윈 토토 DESCRIPTOR mydesc;
결과 집합이 비어 있으면 설명자 영역은 여전히 쿼리의 메타데이터, 즉 필드 이름을 포함합니다.
아직 실행되지 않은 준비된 쿼리의 경우,설명문을 사용하여 다음을 얻을 수 있습니다. 결과 세트의 메타데이터:
EXEC 윈 토토 시작 선언 섹션; char *sql_stmt = "SELECT * FROM table1"; EXEC 윈 토토 END 선언 섹션; EXEC 윈 토토 PREPARE stmt1 FROM :sql_stmt; EXEC 윈 토토 DESCRIBE stmt1 INTO 윈 토토 DESCRIPTOR mydesc;
Postgre윈 토토 9.0 이전에는윈 토토키워드는 선택사항이므로 사용설명자그리고윈 토토 설명자이름이 지정된 윈 토토 설명자 영역이 생성되었습니다. 지금은 필수, 생략윈 토토키워드 윈 토토DA 설명자 영역을 생성합니다. 참조섹션 33.9.2.
에설명그리고가져오기문장, 그INTO그리고사용 중키워드 유사하게 사용될 수 있습니다: 결과 세트를 생성하고 설명자 영역의 메타데이터입니다.
이제 설명자 영역에서 데이터를 어떻게 가져오나요? 당신 설명자 영역을 이름이 지정된 구조로 생각할 수 있습니다. 필드. 헤더에서 필드 값을 검색하려면 호스트 변수에 저장하려면 다음 명령을 사용하십시오.
EXEC 윈 토토 GET 설명자이름 :hostvar = 필드;
현재 헤더 필드는 하나만 정의되어 있습니다:COUNT, 이는 얼마나 많은지 알려줍니다. 항목 설명자 영역이 존재합니다(즉, 항목에 몇 개의 열이 있는지 결과에 포함되어 있습니다). 호스트 변수는 다음 중 하나여야 합니다. 정수형. 항목 설명 영역에서 필드를 가져오려면 다음을 사용하세요. 다음 명령:
EXEC 윈 토토 GET 설명자이름값num :hostvar = 필드;
번호리터럴 정수일 수 있음 또는 정수를 포함하는 호스트 변수입니다. 가능한 분야 다음은:
결과 세트의 행 수
실제 데이터 항목(따라서 이 데이터 유형 필드는 쿼리에 따라 다름)
?
구현되지 않음
표시기(널 값 또는 값을 나타냄) 잘림)
구현되지 않음
문자 단위의 데이텀 길이
열 이름
구현되지 않음
데이텀의 문자 표현 길이 바이트
정밀도(유형용숫자)
문자 단위의 데이텀 길이
데이텀의 문자 표현 길이 바이트
규모(유형용숫자)
열의 데이터 유형에 대한 숫자 코드
에실행, 선언그리고열기진술, 효과INTO그리고사용 중키워드가 다릅니다. 에이 입력을 제공하기 위해 설명자 영역을 수동으로 구축할 수도 있습니다. 쿼리 또는 커서에 대한 매개변수 및윈 토토 설명자 사용이름입력을 전달하는 방법입니다 매개변수를 매개변수화된 쿼리로 변환합니다. 구축하라는 명령문 명명된 윈 토토 설명자 영역은 다음과 같습니다.
EXEC 윈 토토 세트 설명자이름값num 필드 = :hostvar;
Postgre윈 토토은 하나에서 둘 이상의 레코드 검색을 지원합니다.가져오기문 및 데이터 저장 이 경우 호스트 변수에서 변수는 다음과 같다고 가정합니다. 배열. 예:
EXEC 윈 토토 시작 선언 섹션; 정수 아이디[5]; EXEC 윈 토토 END 선언 섹션; EXEC 윈 토토 FETCH 5 mycursor INTO 윈 토토 DESCRIPTOR mydesc; EXEC 윈 토토 GET 설명자 mydesc VALUE 1 :id = DATA;
윈 토토DA 설명자 영역은 다음을 수행할 수 있는 C 언어 구조입니다. 쿼리의 결과 세트와 메타데이터를 가져오는 데에도 사용됩니다. 하나의 구조는 결과 세트의 하나의 레코드를 저장합니다.
EXEC 윈 토토에는 윈 토토da.h가 포함됩니다. 윈 토토da_t *my윈 토토da; EXEC 윈 토토 FETCH 3을 mycursor에서 설명자 my윈 토토da로;
참고:윈 토토키워드는 다음과 같습니다 생략. 의 사용 사례에 대한 단락INTO그리고사용 중키워드 에서섹션 33.9.1또한 여기에 추가로 적용됩니다. 에서설명진술설명자키워드는 다음과 같은 경우 완전히 생략될 수 있습니다.INTO키워드가 사용되었습니다:
EXEC 윈 토토 DESCRIBE prepare_statement INTO my윈 토토da;
윈 토토DA의 구조는 다음과 같습니다:
#define NAMEDATALEN 64
구조체 윈 토토 이름
짧은 길이;
문자 데이터[NAMEDATALEN];
;
구조체 윈 토토var_struct
짧은 윈 토토type;
짧은 윈 토토len;
char *윈 토토data;
짧은 *sqlind;
구조체 윈 토토name 윈 토토name;
;
구조체 윈 토토da_struct
char 윈 토토daid[8];
긴 윈 토토dabc;
짧은 윈 토토n;
짧은 윈 토토d;
구조체 윈 토토da_struct *desc_next;
구조체 윈 토토var_struct 윈 토토var[1];
;
typedef struct 윈 토토var_struct 윈 토토var_t;
typedef 구조체 윈 토토da_struct 윈 토토da_t;
윈 토토DA 구조에 할당된 데이터는 가변적입니다. 결과 집합의 필드 수에 따라 달라지며 또한 레코드의 문자열 데이터 값 길이에 따라 달라집니다. 의 개별 필드윈 토토DA구조는 다음과 같습니다:
"을(를) 포함하고 있습니다.윈 토토DA" 리터럴 문자열.
다음에 할당된 공간의 크기가 포함되어 있습니다. 바이트.
다음에 대한 입력 매개변수의 개수가 포함되어 있습니다. 전달된 매개변수화된 쿼리 사례열기, 선언또는실행다음을 사용하는 문사용 중키워드. 사용된 경우 출력으로선택, 실행또는가져오기문, 그 값은 다음과 같습니다윈 토토d성명
결과 세트의 필드 수를 포함합니다.
쿼리가 하나 이상의 레코드를 반환하는 경우, 여러 연결된 윈 토토DA 구조가 반환되고,desc_next다음에 대한 포인터를 보유합니다. 목록에 항목이 있습니다.
이것은 결과 집합의 필드 배열입니다. 는 필드는 다음과 같습니다.
필드의 유형 식별자가 포함되어 있습니다. 값은 다음을 참조하세요.열거형 ECPGt유형inecpgtype.h.
필드의 바이너리 길이를 포함합니다. 예: 4바이트:ECPGt_int.
(char *)윈 토토data포인트 데이터에.
(char *)sqlind포인트 데이터에 대한 NULL 표시기로 이동합니다. 0은 NULL이 아님을 의미하고, -1은 NULL을 의미합니다.
구조체 윈 토토name 윈 토토name구조의 필드 이름을 포함합니다:
구조체 윈 토토name
짧은 길이;
문자 데이터[NAMEDATALEN];
;
윈 토토name.length필드 이름의 길이를 포함합니다.
윈 토토name.data실제 필드 이름이 포함되어 있습니다.