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

33.5. 동적 롤 토토

많은 경우, 응용프로그램이 실행해야 하는 특정 롤 토토 문은 응용프로그램이 작성되는 시점에 알려져 있습니다. 그러나 어떤 경우에는 롤 토토 문이 런타임 시 구성되거나 외부 소스에 의해 제공됩니다. 이러한 경우 롤 토토 문을 C 소스 코드에 직접 포함할 수는 없지만 문자열 변수에 제공하는 임의의 롤 토토 문을 호출할 수 있는 기능이 있습니다.

33.5.1. 결과 세트 없이 명령문 실행

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

EXEC 롤 토토 시작 선언 섹션;
const char *stmt = "CREATE TABLE test1 (...);";
EXEC 롤 토토 END 선언 섹션;

EXEC 롤 토토 실행 즉시 :stmt;

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

33.5.2. 입력 매개변수가 있는 명령문 실행

임의의 롤 토토 문을 실행하는 더 강력한 방법은 롤 토토 문을 한 번 준비하고 준비된 문을 원하는 만큼 자주 실행하는 것입니다. 일반화된 버전의 명령문을 준비한 다음 매개변수를 대체하여 특정 버전을 실행할 수도 있습니다. 명령문을 준비할 때 나중에 매개변수를 대체할 곳에 물음표를 작성하세요. 예를 들면:

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

EXEC 롤 토토 준비 mystmt FROM :stmt;
 ...
EXEC 롤 토토 EXECUTE mystmt USING 42, 'foobar';

준비된 명령문이 더 이상 필요하지 않으면 할당을 해제해야 합니다.

EXEC 롤 토토 DEALLOCATE PREPARE이름;

33.5.3. 결과 세트로 명령문 실행

단일 결과 행으로 롤 토토 문을 실행하려면,실행사용할 수 있습니다. 결과를 저장하려면를 추가하세요.INTO절.

EXEC 롤 토토 시작 선언 섹션;
const char *stmt = "test1에서 a, b, c를 선택하세요. WHERE a  ?";
int v1, v2;
VARCHAR v3[50];
EXEC 롤 토토 END 선언 섹션;

EXEC 롤 토토 준비 mystmt FROM :stmt;
 ...
EXEC 롤 토토 EXECUTE mystmt INTO :v1, :v2, :v3 USING 37;

실행명령은 다음을 가질 수 있습니다.INTO절, a사용 중절, 둘 다 또는 둘 다 아님.

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

EXEC 롤 토토 시작 선언 섹션;
char dbaname[128];
char 데이터이름[128];
char *stmt = "dbaname, d.datname으로 u.usename 선택"
             " pg_database d, pg_user u "에서
             " d.datdba = u.usesysid";
EXEC 롤 토토 END 선언 섹션;

EXEC 롤 토토 CONNECT TO testdb AS con1 USER testuser;
EXEC 롤 토토 SELECT pg_catalog.set_config('search_path', '', false); EXEC 롤 토토 커밋;

EXEC 롤 토토 준비 stmt1 FROM :stmt;

EXEC 롤 토토 DECLARE 커서1 CURSOR FOR stmt1;
EXEC 롤 토토 OPEN 커서1;

EXEC 롤 토토을 찾을 수 없을 때 중단하십시오.

동안 (1)

    EXEC 롤 토토 FETCH 커서1 INTO :dbaname,:datname;
    printf("dbaname=%s, datname=%s\n", dbaname, datname);

EXEC 롤 토토 CLOSE 커서1;

EXEC 롤 토토 커밋;
EXEC 롤 토토 모두 연결 해제;