OCILogon
(PHP 4, PHP 5, PECL oci8:1.0-1.2.4)
OCILogon — 오라클 데이터베이스에 접속한다.
Description
int OCILogon
( string $username
, string $password
[, string $db
] )
OCILogon()함수는 다른 OCI 함수 호출에 필요한 접속 변수를 넘겨준다. 세번째 인수는 로컬 오라클 인스턴스명이나 tnsnames.ora 설정파일에 설정된 엔트리(entry)명이 될 수 있다. 세번째 인수를 생략할 경우, PHP는 접속할 데이터베이스를 결정하기 위해서 환경변수 ORACLE_SID(Oracle instance) 또는 TWO_TASK(tnsnames.ora)를 이용한다.
OCILogon() 함수를 사용할때마다 각 접속은 페이지 레벨에서 분배되어진다. 즉, 페이지 안에서 열린 모든 트랜잭션에 커밋(commits)과 롤백(rollbacks)이 적용되어진다는 것을 의미한다. 두개이상의 접속을 만들지라도.
아래 예제는 접속이 어떻게 분배되는가를 보여준다.
Example#1 OCILogon
<?php print "<HTML><PRE>"; $db = ""; $c1 = ocilogon("scott","tiger",$db); $c2 = ocilogon("scott","tiger",$db); function create_table($conn) { $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))"); ociexecute($stmt); echo $conn." created table\n\n"; } function drop_table($conn) { $stmt = ociparse($conn,"drop table scott.hallo"); ociexecute($stmt); echo $conn." dropped table\n\n"; } function insert_data($conn) { $stmt = ociparse($conn,"insert into scott.hallo values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); ociexecute($stmt,OCI_DEFAULT); echo $conn." inserted hallo\n\n"; } function delete_data($conn) { $stmt = ociparse($conn,"delete from scott.hallo"); ociexecute($stmt,OCI_DEFAULT); echo $conn." deleted hallo\n\n"; } function commit($conn) { ocicommit($conn); echo $conn." committed\n\n"; } function rollback($conn) { ocirollback($conn); echo $conn." rollback\n\n"; } function select_data($conn) { $stmt = ociparse($conn,"select * from scott.hallo"); ociexecute($stmt,OCI_DEFAULT); echo $conn."----selecting\n\n"; while (ocifetch($stmt)) echo $conn." <".ociresult($stmt,"TEST").">\n\n"; echo $conn."----done\n\n"; } create_table($c1); insert_data($c1); // Insert a row using c1 insert_data($c2); // Insert a row using c2 select_data($c1); // Results of both inserts are returned select_data($c2); rollback($c1); // Rollback using c1 select_data($c1); // Both inserts have been rolled back select_data($c2); insert_data($c2); // Insert a row using c2 commit($c2); // commit using c2 select_data($c1); // result of c2 insert is returned delete_data($c1); // delete all rows in table using c1 select_data($c1); // no rows returned select_data($c2); // no rows returned commit($c1); // commit using c1 select_data($c1); // no rows returned select_data($c2); // no rows returned drop_table($c1); print "</PRE></HTML>"; ?>
See also OCIPLogon() and OCINLogon().