PHP 매뉴얼
이전 |  | 다음

# OCILogon

(PHP 3>= 3.0.4, PHP 4 , PHP 5)

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)이 적용되어진다는 것을 의미한다. 두개이상의 접속을 만들지라도.

아래 예제는 접속이 어떻게 분배되는가를 보여준다.

예 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().

이전 | 처음으로 | 다음
OCILogOff | 위로 | ocinewcollection