반응형

Oracle DBMS 접속 기본 문법

    EXEC SQL CONNECT { :user IDENTIFIED BY :oldpswd | :usr_psw }
    [[ AT { dbname | :host_variable }] USING :connect_string ]
    [ {ALTER AUTHORIZATION :newpswd | IN { SYSDBA | SYSOPER } MODE} ] ;

 


Default Connection 생성하기

    Pro*C에서 Default Connection은 SQL문 등을 실행할 때에 EXEC SQL AT :db_name의 형식에서 AT절이 필요없도록 해주는 것으로 Pro*C로 작성된 프로그램이 실행중에는 오직 하나의 Connection에만 적용되어야 합니다. 

 

 


 

1. USING 절이 없는 Connection 생성


Sample 1). 
    ID/PASSWORD를 한번에 넘겨서 접속하기

    const char *user_pwd = "SCOTT/TIGER";

    EXEC SQL CONNECT :usr_pwd;

 

Sample 2). 

    ID와 PASSWORD를 분리해서 접속하기

    const char *username = "SCOTT";
    const char *password = "TIGER";

    EXEC SQL CONNECT :username IDENTIFIED BY :password;

 

위와 같이 SID값이 없이 Connection을 하려면 default SID가 어떤 것인지 설정되어 있어야만 하는 데, sqlnet client를 사용하는 것(예, SQL*Plus, Pro*C 등)은 환경변수 TWO_TASK에 설정되어야 합니다. Profile이나 실행 전에 환경변수가 설정되어야 합니다.

 

export TWO_TASK=MY_SID

 

접속할 때에 아래와 같이 ID, PASSWORD를 상수로 입력하면 오류가 발생합니다. 반드시 host변수를 통해서 ID, PASSWORD를 설정해야 합니다.

 

EXEC SQL CONNECT SCOTT IDENTIFIED BY TIGER; 
또는

EXEC SQL CONNECT 'SCOTT' IDENTIFIED BY 'TIGER';

 

 


 

2. USING 절을 사용한 Connection 생성

 

Sample 1).  
    USING절을 통한 접속할 SID 지정하기

    char user_pass[20] = "scott/tiger";
    char db_sid[20]     = "MY_DB";

    EXEC SQL CONNECT :user_pass USING :db_sid;

 

Sample 2).

    USING절을 통한 접속할 SID 지정하기

    char username[10] = "scott";
    char password[10] = "tiger";
    char db_sid[20]     = "MY_DB";

    EXEC SQL CONNECT :username IDENTIFIED BY :password USING :db_sid;

 

Default Connection으로 SQL문을 수행할 때에는 

EXEC SQL EXECUTE IMMEDIATE :sql_stmt;

형식으로 SQL문을 수행할 수 있습니다. 즉, SQL문을 수행할 때에 어느 Connection으로 실행할 것인지에 대한 정보가 포함된 AT절이 필요없게 됩니다.

 


2개 이상의 Connection 생성하기

    2개 이상의 Connection을 생성하려면 default connection으로 할 수 없기 때문에 AT절이 추가되어 어떤 Connection인지를 지정할 수 있습니다.

 


 

AT절을 통한 Connection 생성

 

Sample 1). 

    DECLARE를 이용한 DB Connection 이름 지정

    char username[10] = "scott";
    char password[10] = "tiger";
    char db_sid[10]     = "MY_DB";

    EXEC SQL DECLARE DB_CON1 DATABASE ;
    EXEC SQL CONNECT :username IDENTIFIED BY :password AT DB_CON1 USING :db_sid;

위와 같이 DBMS에 접속했을 때에는 SQL문을 수행할 때에 아래와 같은 AT절을 포함해햐 합니다.

EXEC SQL AT DB_CON1 EXECUTE IMMEDIATE :sql_stmt;

 

Sample 2). 

    Host Variable을 이용한 DB Connection 이름 지정

    char username[10] = "scott";
    char password[10] = "tiger";
    char con_name[10] = "db_con1";
    char db_sid[10]     = "MY_DB";

    EXEC SQL CONNECT :username IDENTIFIED BY :password AT :con_name USING :db_sid;

 

위와 같이 DBMS에 접속했을 때에는 SQL문을 수행할 때에 아래와 같은 AT절을 포함해야 합니다.

EXEC SQL AT :con_name EXECUTE IMMEDIATE :sql_stmt;

 

 

 

See Also : Pro*C 목차 및 Sample Source

 

 

 

 

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,