이 문서는 지원되지 않는 버전의 Postgre롤 토토을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다Postgre스포츠 토토 : 문서 : 17 : 34.5. 동적 스포츠 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

33.5. 동적 롤 토토

대부분의 경우 응용 프로그램이 작성된 시점에 응용 프로그램이 실행 해야하는 특정 롤 토토 문이 알려져 있습니다. 그러나 경우에 따라 롤 토토 문은 실행 시간에 구성되거나 외부 소스에 의해 제공됩니다. 이 경우 롤 토토 문을 C 소스 코드에 직접 포함시킬 수는 없지만 문자열 변수에서 제공하는 임의의 롤 토토 문을 호출 할 수있는 시설이 있습니다..

33.5.1. 결과 세트없이 진술 실행

임의의 롤 토토 문을 실행하는 가장 간단한 방법은 명령을 사용하는 것입니다즉시 실행. 예를 들어:

Exec 롤 토토 시작 선언 섹션;
const char *stmt = "생성 테이블 테스트 1 (...);";
Exec 롤 토토 END DELLARE SECTION;

exec 롤 토토 즉시 실행 : stmt;

즉시 실행결과 세트를 반환하지 않는 롤 토토 문에 사용할 수 있습니다 (예 : DDL,삽입, 업데이트, 삭제). 데이터를 검색하는 진술을 실행할 수 없습니다 (예 :select)이 방법. 다음 섹션에서는 그렇게하는 방법에 대해 설명합니다.

33.5.2. 입력 매개 변수로 명령문 실행

임의의 롤 토토 문을 실행하는보다 강력한 방법은 한 번 준비하고 원하는대로 자주 준비한 문을 실행하는 것입니다. 일반화 된 버전의 명령문을 준비한 다음 매개 변수를 대체하여 특정 버전을 실행할 수도 있습니다. 진술을 준비 할 때 나중에 매개 변수를 대체 할 위치에 대한 물음표를 작성하십시오. 예를 들어:

Exec 롤 토토 시작 선언 섹션;
const char *stmt = "test1 값 (?,?)에 삽입;";
Exec 롤 토토 END DELLARE SECTION;

Exec 롤 토토 준비 mystmt : stmt;
 ...
Exec 롤 토토 42, 'foobar';을 사용하여 Mystmt를 실행합니다.

더 이상 준비된 진술이 필요하지 않으면 다음을 처리해야합니다.

Exec 롤 토토 거래 준비이름;

33.5.3. 결과 세트로 진술 실행

단일 결과 행이있는 롤 토토 문을 실행하려면execute를 사용할 수 있습니다. 결과를 저장하려면 AT 추가in절.

Exec 롤 토토 시작 선언 섹션;
const char *stmt = "test1에서 a, b, c를 선택하여 a?";
int v1, v2;
Varchar V3 [50];
Exec 롤 토토 END DELLARE SECTION;

Exec 롤 토토 준비 mystmt : stmt;
 ...
exec 롤 토토 MystMt Execute mystmt : v1, : v2, : v3 사용 37;

anexecute명령은를 가질 수 있습니다.in절, A사용조항, 둘 다 또는 둘 다.

쿼리가 둘 이상의 결과 행을 반환 할 것으로 예상되면 다음 예제에서와 같이 커서를 사용해야합니다. (보다섹션 33.3.2커서에 대한 자세한 내용은.)

Exec 롤 토토 시작 선언 섹션;
Char Dbaname [128];
char datname [128];
char *stmt = "u.useName as dbaname, d.datname을 선택하십시오"
             "pg_database d, pg_user u에서"
             "여기서 d.datdba = u.usesysid";
Exec 롤 토토 END DELLARE SECTION;

EXEC 롤 토토 TestDB에 CON1 사용자 테스트를 사용합니다.
Exec 롤 토토 선택 PG_CATALOG.SET_CONFIG ( 'search_Path', '', False); Exec 롤 토토 커밋;

Exec 롤 토토 STMT1 준비 : STMT;

STMT1에 대한 exec 롤 토토 선언 cursor1 커서;
Exec 롤 토토 Open Cursor1;

찾을 수 없을 때마다 Exec 롤 토토이 중단됩니다.

동안 (1)

    exec 롤 토토은 cursor1을 가져옵니다 : dbaname, : datname;
    printf ( "dbaname =%s, datname =%s \ n", dbaname, datname);

Exec 롤 토토 Close cursor1;

Exec 롤 토토 커밋;
EXEC 롤 토토 모든 분리;