(PROC) DATABASE CONNECTION
1. Explicit Connection
EXEC SQL DECLARE database_name DATABASE;
EXEC SQL CONNECT :username IDENTIFIED BY :password
AT database_name USING :database_string;
. database_name : Precompiler에서의 identifier
. database_string : remote node에 접속하는 SQL*Net syntax
1) SQL Operation
EXEC SQL AT database_name SELECT ...
EXEC SQL AT database_name INSERT ...
EXEC SQL AT database_name UPDATE ...
EXEC SQL AT database_name COMMIT ...
2) PL/SQL Block
EXEC SQL AT database_name EXECUTE
begin
/* PL/SQL block here */
end;
END-EXEC;
3) Cursor Control
EXEC SQL AT database_name DECLARE cursor_name CURSOR FOR ...
EXEC SQL OPEN cursor_name ...
DECALRE문장에만 AT database_name이 들어가며 OPEN, FETCH,
CLOSE문에서는 AT 문을 사용하지 않는다.
4) Dynamic SQL
Dynamic Method 1에서는 execute시점에 At문을 사용한다.
EXEC SQL AT database_name EXECUTE IMMEDIATE :sql_stmt;
Dynamic Method 2,3,4에서는 DECLARE STATEMENT에서만 AT문을
사용한다.
EXEC SQL AT database_name DECLARE sql_stmt STATEMENT;
EXEC SQL PREPARE sql_stmt FROM :sql_string;
...
* host variable로 선언하여 사용할 수도 있다.
char username[10] = "scott";
char password[10] = "tiger";
char db_name[10] = "oracle1";
char db_string[20] = "NYNON";
EXEC SQL CONNECT :username IDENTIFIED BY :password
AT :db_name USING :db_string;
EXEC SQL AT :db_name DELETE ...
- DECLARE DATABASE 문이 필요하지 않으나 SQL Operation시에
사용되는 table들에 대해서 DECLARE TABLE 문을 사용해야
precompile시에 warning을 발생시키지 않는다.
2. Implicit Connection
database link를 사용하여 non-default database를 access한다.
EXEC SQL SELECT ENAME,JOB INTO :emp_name, :job_title
FROM emp@db_link
.....
(database link는 미리 create 되어 있어야 한다.
CREATE DATABASE LINK db_link
CONNECT TO scott IDENTIFIED BY tiger
USING 'T:krhost:SID'; )
이것은 v1 방법이고 , v2 에서는 tnsnames.ora file 의 alias 를 ' ' 안에 써준다.
'정보과학 IT' 카테고리의 다른 글
MSVC++ 를 사용하여 PRO*C PROJECT 를 만드는 방법 (0) | 2013.11.22 |
---|---|
Business Logic(비즈니스 로직) - DB or App .. (0) | 2013.11.21 |
(MSVC++) mspdb100.dll 오류와 vcvars32.bat (0) | 2013.11.20 |
Visual C++ installed, but cannot find cl.exe? (0) | 2013.11.19 |
[SQL Server] DDL, DML, DCL, TCL (0) | 2013.11.18 |