
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
'Oracle > Pro*C' 카테고리의 다른 글
Pro*C 5-2. 오류 처리하기 (WHENEVER) (0) | 2019.09.25 |
---|---|
Pro*C 5-1. 오류 처리하기 (SQLCA) (0) | 2019.09.25 |
Pro*C 4. 기본 SQL문 실행 (0) | 2019.09.25 |
Pro*C 3. 변수선언과 INCLUDE (0) | 2019.09.25 |
Pro*C 2. DB 접속 해제 및 Commit / Rollback (0) | 2019.09.25 |