이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 34.2. 데이터베이스 토토 베이 관리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

33.2. 데이터베이스 토토 사이트 순위 관리

이 섹션은 데이터베이스를 열고 닫고 스위치하는 방법에 대해 설명합니다. 사이.

33.2.1. 데이터베이스에 토토 사이트 순위 섬기는 사람

하나는 다음 진술을 사용하여 데이터베이스에 연결합니다.

Exec SQL Connecttarget[asConnection-name] [사용자사용자 이름];

the대상를 지정할 수 있습니다 다음 방법 :

  • dbname[@hostname] [:포트]

  • tcp : postgresql : //hostname[:포트] [/dbname] [?옵션]

  • unix : postgresql : //hostname[:포트] [/dbname] [?옵션]

  • 위의 양식 중 하나를 포함하는 SQL 문자열 리터럴

  • 위의 것 중 하나를 포함하는 문자 변수에 대한 참조 양식 (예 참조)

  • 기본값

문자 그대로 연결 대상을 지정하는 경우 (즉, 변수 참조를 통해) 그리고 당신은 값을 인용하지 않습니다. 정상 SQL의 사례 감도 규칙이 적용됩니다. 그것에 케이스 개별 매개 변수를 별도로 이중으로 인용 할 수도 있습니다 필요에 따라. 실제로, 사용하는 것은 오류가 덜 (단일 크기) 문자열 문자 또는 가변 참조. 그만큼 연결 대상기본값시작 a 기본 사용자 이름에서 기본 데이터베이스에 대한 연결 아니요 별도의 사용자 이름 또는 연결 이름을 지정할 수 있습니다. 사례.

사용자 이름을 지정하는 다른 방법도 있습니다.

  • 사용자 이름

  • 사용자 이름/비밀번호

  • 사용자 이름식별암호

  • 사용자 이름사용비밀번호

위와 같이 매개 변수사용자 이름and비밀번호SQL 식별자, SQL 일 수 있습니다 문자열 리터럴 또는 문자 변수에 대한 참조

theConnection-name익숙합니다 하나의 프로그램에서 여러 연결을 처리합니다. a 프로그램은 하나의 연결 만 사용합니다. 가장 최근에 문을 열었습니다 연결은 현재 연결이되고 기본적으로 사용됩니다. SQL 문을 실행할 때 장).

신뢰할 수없는 사용자가 아닌 데이터베이스에 액세스 할 수있는 경우 채택보안 스키마 사용 패턴, 각 세션을 제거하여 시작하십시오 공개적으로 쓰레기 스키마에서search_path. 예를 들어 add옵션 = -csearch_path =to옵션또는 문제EXEC SQL SELECT pg_catalog.set_config ( 'search_path', '', false);연결. 이 고려 사항은 ECPG에만 국한되지 않습니다. 적용됩니다 임의의 SQL 명령을 실행하기위한 모든 인터페이스에.

다음은의 몇 가지 예입니다.Connect진술 :

exec sql mydb@sql.mydomain.com에 연결;

exec sql unix에 연결 : postgresql : //sql.mydomain.com/mydb myconnection user john;

Exec SQL 시작 선언 섹션;
const char *target = "mydb@sql.mydomain.com";
const char *user = "John";
const char *passwd = "비밀";
Exec SQL END DELLARE SECTION;
 ...
Exec SQL Connect : 대상 사용자 : 사용자 사용 : Passwd;
/* 또는 EXEC SQL Connect : 대상 사용자 : user/: passwd; */

마지막 양식은 위에 언급 된 변형을 사용합니다. 문자 변수 참조. 나중에 섹션에서 볼 수 있습니다. c 변수는 SQL 문에 사용할 수 있습니다. 콜론.

연결 대상의 형식이 아닙니다. SQL 표준에 지정됩니다. 따라서 휴대용을 개발하려면 응용 프로그램, 마지막을 기준으로 무언가를 사용하고 싶을 수도 있습니다. 위의 예는 연결 대상 문자열을 캡슐화합니다 어딘가에.

33.2.2. 토토 사이트 순위 선택

임베디드 SQL 프로그램의 SQL 문은 기본적으로 실행됩니다. 현재 연결에서, 즉 가장 최근에 열린 연결. 응용 프로그램이 여러 연결을 관리 해야하는 경우 이것을 처리하는 두 가지 방법입니다.

첫 번째 옵션은 각각에 대한 연결을 명시 적으로 선택하는 것입니다. SQL 문, 예 :

exec sql atConnection-name선택 ...;

이 옵션은 응용 프로그램이 필요한 경우 특히 적합합니다. 혼합 순서로 여러 연결을 사용하십시오.

응용 프로그램에서 여러 실행 스레드를 사용하는 경우, 그것들 동시에 연결을 공유 할 수 없습니다. 당신은 명시 적으로해야합니다 연결에 대한 액세스 제어 (Mutxes 사용) 또는 각 스레드에 대한 연결.

두 번째 옵션은 진술을 실행하여 전환하는 것입니다. 현재 연결. 그 진술은 :

Exec SQL Set ConnectionConnection-name;

이 옵션은 많은 진술이 있으면 특히 편리합니다. 동일한 연결로 실행됩니다.

여러 데이터베이스를 관리하는 예제 프로그램이 있습니다 사이:

#include <stdio.h

Exec SQL 시작 선언 섹션;
    char dbname [1024];
Exec SQL END DELLARE SECTION;

int
기본()

    EXEC SQL TestDB1에 CON1 사용자 테스트를 사용합니다.
    Exec SQL 선택 PG_CATALOG.SET_CONFIG ( 'search_Path', '', False); Exec SQL 커밋;
    EXEC SQL TestDB2에 CON2 사용자 테스트를 연결하고;
    Exec SQL 선택 PG_CATALOG.SET_CONFIG ( 'search_Path', '', False); Exec SQL 커밋;
    Exec SQL TestDB3에 CON3 사용자 테스트를 연결하고;
    Exec SQL 선택 PG_CATALOG.SET_CONFIG ( 'search_Path', '', False); Exec SQL 커밋;

    /*이 쿼리는 마지막으로 열린 데이터베이스 "TestDB3"에서 실행됩니다. */
    exec SQL select current_database ()에 : dbname;
    printf ( "current =%s (testdb3이어야 함) \ n", dbname);

    / * "at"사용 "testdb2"에서 쿼리를 실행합니다. */
    con2에서 exec sql current_database ()를 선택하십시오 : dbname;
    printf ( "current =%s (testdb2이어야 함) \ n", dbname);

    /* 현재 연결을 "TestDB1"으로 전환합니다. */
    EXEC SQL SET 연결 CON1;

    exec SQL select current_database ()에 : dbname;
    printf ( "current =%s (testdb1이어야 함) \ n", dbname);

    Exec SQL 모든 분리;
    반환 0;

이 예제는이 출력을 생성합니다 :

current = testdb3 (testdb3이어야 함)
current = testdb2 (testdb2이어야 함)
current = testdb1 (testdb1이어야 함)

33.2.3. 토토 사이트 순위 닫기

연결을 닫으려면 다음 진술을 사용하십시오.

Exec SQL 분리 [Connection];

theConnection지정할 수 있습니다 다음과 같은 방법으로 :

  • Connection-name

  • 기본값

  • 현재

  • all

연결 이름이 지정되지 않은 경우 현재 연결은 다음과 같습니다. 닫은.

응용 프로그램이 항상 명시 적으로 좋은 스타일입니다 열린 모든 토토 사이트 순위에서 분리합니다.