PHP 매뉴얼
이전 |  | 다음

# LXXIV. 오라클 8 함수

이 함수들을 통해 오라클 8과 오라클 7 데이터베이스를 연동하여 사용한다. Oracle8 Call-Interface (OCI8)를 사용하며, 이 함수들을 사용하려면 오라클8 클라이언트 라이브러리(Oracle8 client libraries)가 필요하다.

이 함수는 표준 오라클 함수보다 유연하다. PHP의 전역 변수와 지역 변수들의 오라클 위치보유자(Oracle placeholder) 로의 연계(binding), full LOB, FILE, ROWID를 지원하며, user-supplied define variable을 사용할 수 있도록 해 준다.

이 함수를 사용하기 전에 오라클 계정과 웹 데몬 계정에 유효한 오라클 환경변수를 적용했는지 확인해야한다. 적용시킬 환경변수:

- ORACLE_HOME

- ORACLE_SID

- LD_PRELOAD

- LD_LIBRARY_PATH

- NLS_LANG

- ORA_NLS33

웹서버 계정으로 위 환경변수를 적용한후에, 웹서버 계정(nobody, www)을 오라클 그룹에 추가했는지 확인해야 한다.

> 웹서버가 시작하지 않거나 시작시 제대로 작동하지 않으면: 아파치가 pthread 라이브러리에 링크되어있는지 체크하라:

>     # ldd /www/apache/bin/httpd
>         libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
>         libm.so.6 => /lib/libm.so.6 (0x4002f000)
>         libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
>         libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
>         libc.so.6 => /lib/libc.so.6 (0x4007e000)
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

> libpthread가 보이지 않으면 아파치를 다시 설치해야한다 :

>     # cd /usr/src/apache_1.3.xx
>     # make clean
>     # LIBS=-lpthread ./config.status
>     # make
>     # make install

예 1. OCI Hints

`<?php
// by sergo@bacup.ru
// Use option: OCI_DEFAULT for execute command to delay execution
OCIExecute($stmt, OCI_DEFAULT);
// for retrieve data use (after fetch):
$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();
// For INSERT or UPDATE statement use:
$sql = "insert into table (field1, field2) values (field1 = 'value',
field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &amp;$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);
?&gt;`

커맨드 라인(command-line)에서의 사용 방식과 동일하게 내장 프로시저(stored procedures)를 사용할 수 있다.

예 2. 내장 프로시저(Stored Procedures) 사용하기

`<?php
// by webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
'$lastname', '$company', '$address1', '$address2', '$city', '$state',
'$postalcode', '$country', :error_code );end;" );
// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:
OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
OCIExecute ( $sth );
?>`

이전 | 처음으로 | 다음
deaggregate | 위로 | oci_bind_by_name