fuzzy74 Sat Jan 5 08:53:39 2002 EDT Modified files: /phpdoc/kr/functions oci8.xml Log: UPDATE. new function Translated to Korean. Thank you.
Index: phpdoc/kr/functions/oci8.xml diff -u phpdoc/kr/functions/oci8.xml:1.10 phpdoc/kr/functions/oci8.xml:1.11 --- phpdoc/kr/functions/oci8.xml:1.10 Wed Dec 12 15:55:07 2001 +++ phpdoc/kr/functions/oci8.xml Sat Jan 5 08:53:38 2002 @@ -1,23 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> +<!-- $Revision: 1.11 $ --> <reference id="ref.oci8"> <title>오라클 8 함수</title> <titleabbrev>OCI8</titleabbrev> <partintro> <para> - 이 함수들은 Oracle8과 Oracle7 데이터베이스에 접근할 수 있도록 해준다. - 이것은 Oracle8 Call-Interface (OCI8)를 사용한다. - 이 드라이버를 사용하려면 Oracle8 client libraries가 필요하다. + 이 함수들을 통해 오라클 8과 오라클 7 데이터베이스를 +연동하여 사용한다. + Oracle8 Call-Interface (OCI8)를 사용하며, 이 함수들을 사용하려면 + 오라클8 클라이언트 라이브러리(Oracle8 client libraries)가 +필요하다. </para> <para> - 이 드라이버는 보통의 PHP Ora_ 드라이버보다 더욱 유연하다. - 이것은 PHP의 전역, 지역 변수들의 Oracle placeholder로의 binding을 지원하고, - full LOB와 FILE, ROWID를 지원하며, user-supplied define variable을 - 사용할 수 있도록 해 준다. + 이 함수는 표준 오라클 함수보다 유연하다. + PHP의 전역 변수와 지역 변수들의 오라클 위치보유자(Oracle +placeholder) + 로의 연계(binding), full LOB, FILE, ROWID를 지원하며, + user-supplied define variable을 사용할 수 있도록 해 준다. </para> <para> - 이 드라이버를 사용하기 전에 오라클 유저와 웹서버 유저에게 - 유효한 오라클 환경변수를 적용했는지 확인해야한다. - 적용시킬 환경변수: + 이 함수를 사용하기 전에 오라클 계정과 웹 데몬 계정에 + 유효한 오라클 환경변수를 적용했는지 확인해야한다. + 적용시킬 환경변수: <itemizedlist> <listitem> <simpara> @@ -52,14 +53,52 @@ </itemizedlist> </para> <para> - 웹서버 유저에게 환경변수를 적용한후에, - 웹서버 유저(nobody, www)를 오라클 그룹에 추가했는지 확인해야 한다. + 웹서버 계정으로 위 환경변수를 적용한후에, + 웹서버 계정(nobody, www)을 오라클 그룹에 추가했는지 확인해야 +한다. </para> + <note> + <title>웹서버가 시작하지 않거나 시작시 제대로 작동하지 +않으면</title> + <para> + 아파치가 pthread 라이브러리에 링크되어있는지 체크하라: + </para> + <para> + <informalexample> + <screen> +<![CDATA[ +# 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) +]]> + </screen> + </informalexample> + </para> + <para> + libpthread가 보이지 않으면 아파치를 다시 설치해야한다 : + </para> + <para> + <informalexample> + <screen> +<![CDATA[ +# cd /usr/src/apache_1.3.xx +# make clean +# LIBS=-lpthread ./config.status +# make +# make install +]]> + </screen> + </informalexample> + </para> + </note> <para> <example> <title>OCI Hints</title> <programlisting role="php"> -<?php +<![CDATA[ +<?php // by [EMAIL PROTECTED] // Use option: OCI_DEFAULT for execute command to delay execution @@ -79,18 +118,21 @@ OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB); OCIExecute($stmt, OCI_DEFAULT); $clob->save ("some text"); +OCICommit($conn); ?> +]]> </programlisting> </example> </para> <para> - command-line에서 내장 프로시저(stored procedures)를 쓰는것처럼 - 사용이 간편하다. + 커맨드 라인(command-line)에서의 사용 방식과 동일하게 + 내장 프로시저(stored procedures)를 사용할 수 있다. <example> <title>내장 프로시저(Stored Procedures) 사용하기</title> <programlisting role="php"> -<?php +<![CDATA[ +<?php // by [EMAIL PROTECTED] $sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname', '$lastname', '$company', '$address1', '$address2', '$city', '$state', @@ -104,7 +146,8 @@ OCIBindByName ( $sth, ":error_code", $errorcode, 10 ); OCIExecute ( $sth ); -?> +?> +]]> </programlisting> </example> </para> @@ -114,8 +157,7 @@ <refnamediv> <refname>OCIDefineByName</refname> <refpurpose> - SELECT 구문(Statement)을 사용하는 동안 정의단계(define-step)를 위한 - PHP 변수를 할당한다. + 한 SELECT 구문사용시 정의단계(define-step)를 위한 PHP 변수를 +할당한다. </refpurpose> </refnamediv> <refsect1> @@ -132,7 +174,7 @@ </funcsynopsis> <para> <function>OCIDefineByName</function>함수는 - 페치(fetch)한 컬럼을 사용자정의 변수 에 할당한다. + 페치(fetch)한 컬럼을 사용자정의 PHP변수 에 할당한다. 물론, 오라클 유저는 select 구문에서 소문자 컬럼명을 쓸수 있지만, <function>OCIDefineByName</function>함수의 <parameter>Column-Name</parameter>인수는 반드시 대문자로 적어야 한다. @@ -147,7 +189,8 @@ <example> <title>OCIDefineByName</title> <programlisting> -<?php +<![CDATA[ +<?php /* OCIDefineByPos example [EMAIL PROTECTED] (980219) */ $conn = OCILogon("scott","tiger"); @@ -169,6 +212,7 @@ OCIFreeStatement($stmt); OCILogoff($conn); ?> +]]> </programlisting> </example> </refsect1> @@ -200,13 +244,13 @@ <parameter>ph_name</parameter>변수에 연계시킨다. 용도가 입력인지 출력인지는 실시간으로 결정될것이고, 충분한 저장 공간이 할당될 필요가 있다. <parameter>length</parameter>인수 - 는 바인드를 위한 최대 길이를 세팅한다. <parameter>length</parameter>인수를 + 는 연계를 위한 최대 용량을 세팅한다. +<parameter>length</parameter>인수를 -1로 세팅하면 <function>OCIBindByName</function>함수는 - 바인드를 위한 최대 길이를 <parameter>variable</parameter>의 - 현재 길이로 사용할것이다. + 연계를 위한 최대 용량을 <parameter>variable</parameter>의 + 현재 용량으로 사용할것이다. </para> <para> - 추상형 데이터타입(LOB/ROWID/BFILE)을 바인드 할 필요가 있다면 + 추상형 데이터타입(LOB/ROWID/BFILE)을 연계 할 필요가 있다면 우선은 <function>OCINewDescriptor</function>함수를 사용해서 변수를 할당해야 한다. <parameter>length</parameter>인수는 추상형 데이터타입 @@ -220,7 +264,8 @@ <example> <title>OCIDefineByName</title> <programlisting> -<?php +<![CDATA[ +<?php /* OCIBindByPos example [EMAIL PROTECTED] (980221) inserts 3 records into emp, and uses the ROWID for updating the records just after the insert. @@ -229,8 +274,8 @@ $conn = OCILogon("scott","tiger"); $stmt = OCIParse($conn,"insert into emp (empno, ename) ". - "values (:empno,:ename) ". - "returning ROWID into :rid"); + "values (:empno,:ename) ". + "returning ROWID into :rid"); $data = array(1111 => "Larry", 2222 => "Bill", 3333 => "Jim"); @@ -270,17 +315,18 @@ OCILogoff($conn); ?> +]]> </programlisting> </example> <warning> - <para> + </para> It is a bad idea to use magic quotes and <function>OciBindByName</function> simultaneously as no quoting is needed on quoted variables and any quotes magically applied will be written into your database as <function>OciBindByName</function> is not able to distinguish magically added quotings from those added by intention. - </para> + </para> </warning> </refsect1> </refentry> @@ -288,7 +334,7 @@ <refentry id="function.ocilogon"> <refnamediv> <refname>OCILogon</refname> - <refpurpose>오라클 접속을 형성한다.</refpurpose> + <refpurpose>오라클 데이터베이스에 접속한다.</refpurpose> </refnamediv> <refsect1> <title>Description</title> @@ -303,15 +349,15 @@ </funcprototype> </funcsynopsis> <para> - <function>OCILogon</function> 다른 OCI 함수 호출에 필요한 접속 변수를 - 넘겨준다. 세번째 인수는 로컬 오라클 인스턴스(local Oracle instance)이름, - 또는 tnsnames.ora 설정파일에 설정된 엔트리(entry) 이름이 될 수 있다. + <function>OCILogon</function>함수는 다른 OCI 함수 호출에 필요한 +접속 변수를 + 넘겨준다. 세번째 인수는 로컬 오라클 인스턴스명이나 + tnsnames.ora 설정파일에 설정된 엔트리(entry)명이 될 수 있다. 세번째 인수를 생략할 경우, PHP는 접속할 데이터베이스를 결정하기 위해서 환경변수 ORACLE_SID(Oracle instance) 또는 TWO_TASK(tnsnames.ora)를 이용한다. </para> <para><function>OCILogon</function> 함수를 사용할때마다 각 접속은 - 페이지 레벨에서 분배되어진다. 이것은 각 페이지에서 열린 모든 + 페이지 레벨에서 분배되어진다. 즉, 페이지 안에서 열린 +모든 트랜잭션에 커밋(commits)과 롤백(rollbacks)이 적용되어진다는 것을 의미한다. 두개이상의 접속을 만들지라도. </para> @@ -320,8 +366,9 @@ <example> <title>OCILogon</title> <programlisting> -<?php -print "<HTML><PRE>"; +<![CDATA[ +<?php +print "<HTML><PRE>"; $db = ""; $c1 = ocilogon("scott","tiger",$db); @@ -367,7 +414,7 @@ ociexecute($stmt,OCI_DEFAULT); echo $conn."----selecting\n\n"; while (ocifetch($stmt)) - echo $conn." <".ociresult($stmt,"TEST").">\n\n"; + echo $conn." <".ociresult($stmt,"TEST").">\n\n"; echo $conn."----done\n\n"; } @@ -398,8 +445,12 @@ drop_table($c1); -print "</PRE></HTML>"; -?></programlisting></example></para> +print "</PRE></HTML>"; +?> +]]> + </programlisting> + </example> + </para> <simpara> See also <function>OCIPLogon</function> and <function>OCINLogon</function>.</simpara> @@ -460,10 +511,10 @@ </funcsynopsis> <para> <function>OCINLogon</function> 오라클8 DB에 새로운 접속을 형성하고, - 로그온 한다. 세번째 인수는 로컬 오라클 인스턴스(local Oracle instanace)의 - 이름, 또는 tnsnames.ora설정파일의 엔트리(entry) 이름이 될수 있다. + 로그온 한다. 세번째 인수는 로컬 오라클 인스턴스명이나 + tnsnames.ora 설정파일의 엔트리(entry)명이 될수 있다. 세번째 인수가 생략되면, PHP는 접속할 오라클 데이터베이스를 결정하기 위해 - 환경변수 ORACLE_SID (Oracle instance)나 TWO_TASK(tnsnames.ora)를 + 환경변수 ORACLE_SID(Oracle instance)나 TWO_TASK(tnsnames.ora)를 이용한다. </para> <para> @@ -476,12 +527,13 @@ 모든 커밋(commits)과 롤백(rollbacks)은 특정 접속에만 적용되어진다. </para> <para> - This example demonstrates how the connections are separated. + 이 예제는 접속이 어떻게 분리되는지 보여준다. <example> <title>OCINLogon</title> <programlisting> -<?php -print "<HTML><PRE>"; +<![CDATA[ +<?php +print "<HTML><PRE>"; $db = ""; $c1 = ocilogon("scott","tiger",$db); @@ -528,7 +580,7 @@ ociexecute($stmt,OCI_DEFAULT); echo $conn."----selecting\n\n"; while (ocifetch($stmt)) - echo $conn." <".ociresult($stmt,"TEST").">\n\n"; + echo $conn." <".ociresult($stmt,"TEST").">\n\n"; echo $conn."----done\n\n"; } @@ -558,8 +610,11 @@ drop_table($c1); -print "</PRE></HTML>"; -?></programlisting></example> +print "</PRE></HTML>"; +?> +]]> + </programlisting> + </example> </para> <simpara> See also <function>OCILogon</function> and @@ -571,7 +626,7 @@ <refentry id="function.ocilogoff"> <refnamediv> <refname>OCILogOff</refname> - <refpurpose>오라클로 부터 접속을 해제한다.</refpurpose> + <refpurpose>오라클로부터 접속을 해제한다.</refpurpose> </refnamediv> <refsect1> <title>Description</title> @@ -582,7 +637,7 @@ </funcprototype> </funcsynopsis> <para> - <function>OCILogOff</function> 오라클 접속을 닫는다. + <function>OCILogOff</function> 오라클 접속을 해제한다. </para> </refsect1> </refentry> @@ -604,10 +659,10 @@ </funcprototype> </funcsynopsis> <para> - <function>OCIExecute</function> 미리 해석된 구문(statement)을 + <function>OCIExecute</function>함수는 미리 해석된 구문(statement)을 실행한다. (<function>OCIParse</function>함수를 보라.) 선택적인 인수 <parameter>mode</parameter>에 execution-mode(디폴트는 - OCI_COMMIT_ON_SUCCESS이다)를 지정할 수 있다. 각 구문이 자동적으로 + OCI_COMMIT_ON_SUCCESS)를 지정할 수 있다. 각 구문이 자동적으로 커밋(commit)되지 않기를 원하면 OCI_DEFAULT로 설정하면 된다. </para> </refsect1> @@ -627,7 +682,7 @@ </funcprototype> </funcsynopsis> <para> - <function>OCICommit</function> 오라클 접속 파라미터 + <function>OCICommit</function>함수는 오라클 접속 인수인 <parameter>connection</parameter>에 대해서 미결정된 모든 구문(outstanding statements)을 커밋한다. </para> @@ -648,7 +703,7 @@ </funcprototype> </funcsynopsis> <para> - <function>OCIRollback</function> 오라클 접속 파라미터 + <function>OCIRollback</function>함수는 오라클 접속 인수 <parameter>connection</parameter>에 대해서 미결정된 모든 구문(outstanding statements)을 롤백 처리한다. </para> @@ -674,18 +729,19 @@ </funcprototype> </funcsynopsis> <para> - <function>OCINewDescriptor</function>함수는 hold descpriptor나 + <function>OCINewDescriptor</function>함수는 descpriptor나 LOB locator를 위한 저장공간을 할당한다. - 유효한 <parameter>type</parameter>값은 OCI_D_FILE, OCI_D_LOB, + 유효한 <parameter>type</parameter>인수값은 OCI_D_FILE, OCI_D_LOB, OCI_D_ROWID 이다. - LOB descriptor를 위해 load, save, savefile 메쏘드가 - descriptor에 연결되어 있다. BFILE를 위해서는 load 메쏘드만이 존재한다. + LOB descriptor은 load, save, savefile 메쏘드를 사용할수 있고, + BFILE은 load 메쏘드만 사용가능하다. See the second example usage hints. </para> <example> <title>OCINewDescriptor</title> <programlisting> -<?php +<![CDATA[ +<?php /* This script is designed to be called from a HTML form. * It expects $user, $password, $table, $where, and $commitsize * to be passed in from the form. The script then deletes @@ -712,22 +768,24 @@ OCIFreeStatement($stmt); OCILogoff($conn); ?> +]]> </programlisting> <programlisting> -<?php +<![CDATA[ +<?php /* This script demonstrates file upload to LOB columns * The formfield used for this example looks like this - * <form action="upload.php3" method="post" enctype="multipart/form-data"> - * <input type="file" name="lob_upload"> + * <form action="upload.php3" method="post" enctype="multipart/form-data"> + * <input type="file" name="lob_upload"> * ... */ if(!isset($lob_upload) || $lob_upload == 'none'){ ?> -<form action="upload.php3" method="post" enctype="multipart/form-data"> -Upload file: <input type="file" name="lob_upload"><br> -<input type="submit" value="Upload"> - <input type="reset"> -</form> -<?php +<form action="upload.php3" method="post" enctype="multipart/form-data"> +Upload file: <input type="file" name="lob_upload"><br> +<input type="submit" value="Upload"> - <input type="reset"> +</form> +<?php } else { // $lob_upload contains the temporary filename of the uploaded file $conn = OCILogon($user, $password); @@ -747,6 +805,39 @@ OCILogoff($conn); } ?> +]]> + </programlisting> + </example> + <example> + <title>OCINewDescriptor</title> + <programlisting> +<![CDATA[ +<?php + /* Calling PL/SQL stored procedures which contain clobs as input + * parameters (PHP 4 >= 4.0.6). + * Example PL/SQL stored procedure signature is: + * + * PROCEDURE save_data + * Argument Name Type In/Out Default? + * ------------------------------ ----------------------- ------ -------- + * KEY NUMBER(38) IN + * DATA CLOB IN + * + */ + + $conn = OCILogon($user, $password); + $stmt = OCIParse($conn, "begin save_data(:key, :data); end;"); + $clob = OCINewDescriptor($conn, OCI_D_LOB); + OCIBindByName($stmt, ':key', $key); + OCIBindByName($stmt, ':data', $clob, -1, OCI_B_CLOB); + $clob->WriteTemporary($data); + OCIExecute($stmt, OCI_DEFAULT); + OCICommit($conn); + $clob->close(); + $clob->free(); + OCIFreeStatement($stmt); +?> +]]> </programlisting> </example> </refsect1> @@ -773,24 +864,28 @@ <example> <title>OCIRowCount</title> <programlisting> -<?php - print "<HTML><PRE>"; +<![CDATA[ +<?php + print "<HTML><PRE>"; $conn = OCILogon("scott","tiger"); $stmt = OCIParse($conn,"create table emp2 as select * from emp"); OCIExecute($stmt); - print OCIRowCount($stmt) . " rows inserted.<BR>"; + print OCIRowCount($stmt) . " rows inserted.<BR>"; OCIFreeStatement($stmt); $stmt = OCIParse($conn,"delete from emp2"); OCIExecute($stmt); - print OCIRowCount($stmt) . " rows deleted.<BR>"; + print OCIRowCount($stmt) . " rows deleted.<BR>"; OCICommit($conn); OCIFreeStatement($stmt); $stmt = OCIParse($conn,"drop table emp2"); OCIExecute($stmt); OCIFreeStatement($stmt); OCILogOff($conn); - print "</PRE></HTML>"; -?> </programlisting></example> + print "</PRE></HTML>"; +?> +]]> + </programlisting> + </example> </para> </refsect1> </refentry> @@ -816,15 +911,16 @@ <example> <title>OCINumCols</title> <programlisting> -<?php - print "<HTML><PRE>\n"; +<![CDATA[ +<?php + print "<HTML><PRE>\n"; $conn = OCILogon("scott", "tiger"); $stmt = OCIParse($conn,"select * from emp"); OCIExecute($stmt); while ( OCIFetch($stmt) ) { print "\n"; $ncols = OCINumCols($stmt); - for ( $i = 1; $i <= $ncols; $i++ ) { + for ( $i = 1; $i <= $ncols; $i++ ) { $column_name = OCIColumnName($stmt,$i); $column_value = OCIResult($stmt,$i); print $column_name . ': ' . $column_value . "\n"; @@ -833,9 +929,10 @@ } OCIFreeStatement($stmt); OCILogoff($conn); - print "</PRE>"; - print "</HTML>\n"; + print "</PRE>"; + print "</HTML>\n"; ?> +]]> </programlisting> </example> </refsect1> @@ -859,8 +956,8 @@ <function>OCIResult</function>함수는 현재 열의 컬럼 <parameter>column</parameter>에 대한 데이터를 리턴한다 (<function>OCIFetch</function>함수를 보라). - <function>OCIResult</function>함수는 추상형데이터타입(ROWID, LOB, FILE)을 - 제외한 문자열같은 모든 것을 리턴할 것이다. + <function>OCIResult</function>함수는 추상형데이터타입(ROWID, LOB, +FILE)을 + 제외한 문자열로서 모든 것을 리턴할 것이다. </para> </refsect1> </refentry> @@ -911,23 +1008,19 @@ 일차원 배열을 포함할것이다. </para> <para> - The <parameter>mode</parameter> parameter allows you to change the - default behaviour. You can specify more than one flag by simply - adding them up (eg OCI_ASSOC+OCI_RETURN_NULLS). The known flags - are: <parameter>mode</parameter>인수는 이 함수의 기본값을 변화시킨다. - 한개 이상의 플래그를 추가할수있다(OCI_ASSOC+OCI_RETURN_NULLS와 같이). - 알려진 플래그는 다음과 같다: + 한개 이상의 플래그를 추가할수있다(OCI_ASSOC+OCI_RETURN_NULLS와 +같이). + 알려진 플래그는 다음과 같다: <simplelist> <member> <literal>OCI_ASSOC</literal> 연관배열(associative array)을 리턴한다. </member> <member> - <literal>OCI_NUM</literal> 1부터 시작하는 숫자를 갖는 변수를 리턴한다. + <literal>OCI_NUM</literal> 키값이 0부터 시작하는 배열을 +리턴한다. (디폴트) </member> <member> - <literal>OCI_RETURN_NULLS</literal> 빈 컬럼을 리턴한다. + <literal>OCI_RETURN_NULLS</literal> 빈 컬럼도 리턴한다. </member> <member> <literal>OCI_RETURN_LOBS</literal>descriptor 대신에 LOB의 값을 리턴한다. @@ -960,7 +1053,8 @@ <example> <title>OCIFetchStatement</title> <programlisting> -<?php +<![CDATA[ +<?php /* OCIFetchStatement example [EMAIL PROTECTED] (990624) */ $conn = OCILogon("scott","tiger"); @@ -971,31 +1065,32 @@ $nrows = OCIFetchStatement($stmt,$results); if ( $nrows > 0 ) { - print "<TABLE BORDER=\"1\">\n"; - print "<TR>\n"; + print "<TABLE BORDER=\"1\">\n"; + print "<TR>\n"; while ( list( $key, $val ) = each( $results ) ) { - print "<TH>$key</TH>\n"; + print "<TH>$key</TH>\n"; } - print "</TR>\n"; + print "</TR>\n"; - for ( $i = 0; $i < $nrows; $i++ ) { + for ( $i = 0; $i < $nrows; $i++ ) { reset($results); - print "<TR>\n"; + print "<TR>\n"; while ( $column = each($results) ) { $data = $column['value']; - print "<TD>$data[$i]</TD>\n"; + print "<TD>$data[$i]</TD>\n"; } - print "</TR>\n"; + print "</TR>\n"; } - print "</TABLE>\n"; + print "</TABLE>\n"; } else { - echo "No data found<BR>\n"; + echo "No data found<BR>\n"; } -print "$nrows Records Selected<BR>\n"; +print "$nrows Records Selected<BR>\n"; OCIFreeStatement($stmt); OCILogoff($conn); ?> +]]> </programlisting> </example> </refsect1> @@ -1048,33 +1143,35 @@ <example> <title>OCIColumnName</title> <programlisting> -<?php - print "<HTML><PRE>\n"; +<![CDATA[ +<?php + print "<HTML><PRE>\n"; $conn = OCILogon("scott", "tiger"); $stmt = OCIParse($conn,"select * from emp"); OCIExecute($stmt); - print "<TABLE BORDER=\"1\">"; - print "<TR>"; - print "<TH>Name</TH>"; - print "<TH>Type</TH>"; - print "<TH>Length</TH>"; - print "</TR>"; + print "<TABLE BORDER=\"1\">"; + print "<TR>"; + print "<TH>Name</TH>"; + print "<TH>Type</TH>"; + print "<TH>Length</TH>"; + print "</TR>"; $ncols = OCINumCols($stmt); - for ( $i = 1; $i <= $ncols; $i++ ) { + for ( $i = 1; $i <= $ncols; $i++ ) { $column_name = OCIColumnName($stmt,$i); $column_type = OCIColumnType($stmt,$i); $column_size = OCIColumnSize($stmt,$i); - print "<TR>"; - print "<TD>$column_name</TD>"; - print "<TD>$column_type</TD>"; - print "<TD>$column_size</TD>"; - print "</TR>"; + print "<TR>"; + print "<TD>$column_name</TD>"; + print "<TD>$column_type</TD>"; + print "<TD>$column_size</TD>"; + print "</TR>"; } OCIFreeStatement($stmt); OCILogoff($conn); - print "</PRE>"; - print "</HTML>\n"; + print "</PRE>"; + print "</HTML>\n"; ?> +]]> </programlisting> </example> </para> @@ -1109,34 +1206,36 @@ <example> <title>OCIColumnSize</title> <programlisting> -<?php - print "<HTML><PRE>\n"; +<![CDATA[ +<?php + print "<HTML><PRE>\n"; $conn = OCILogon("scott", "tiger"); $stmt = OCIParse($conn,"select * from emp"); OCIExecute($stmt); - print "<TABLE BORDER=\"1\">"; - print "<TR>"; - print "<TH>Name</TH>"; - print "<TH>Type</TH>"; - print "<TH>Length</TH>"; - print "</TR>"; + print "<TABLE BORDER=\"1\">"; + print "<TR>"; + print "<TH>Name</TH>"; + print "<TH>Type</TH>"; + print "<TH>Length</TH>"; + print "</TR>"; $ncols = OCINumCols($stmt); - for ( $i = 1; $i <= $ncols; $i++ ) { + for ( $i = 1; $i <= $ncols; $i++ ) { $column_name = OCIColumnName($stmt,$i); $column_type = OCIColumnType($stmt,$i); $column_size = OCIColumnSize($stmt,$i); - print "<TR>"; - print "<TD>$column_name</TD>"; - print "<TD>$column_type</TD>"; - print "<TD>$column_size</TD>"; - print "</TR>"; + print "<TR>"; + print "<TD>$column_name</TD>"; + print "<TD>$column_type</TD>"; + print "<TD>$column_size</TD>"; + print "</TR>"; } - print "</TABLE>"; + print "</TABLE>"; OCIFreeStatement($stmt); OCILogoff($conn); - print "</PRE>"; - print "</HTML>\n"; + print "</PRE>"; + print "</HTML>\n"; ?> +]]> </programlisting> </example> </para> @@ -1170,33 +1269,35 @@ <example> <title>OCIColumnType</title> <programlisting> -<?php - print "<HTML><PRE>\n"; +<![CDATA[ +<?php + print "<HTML><PRE>\n"; $conn = OCILogon("scott", "tiger"); $stmt = OCIParse($conn,"select * from emp"); OCIExecute($stmt); - print "<TABLE BORDER=\"1\">"; - print "<TR>"; - print "<TH>Name</TH>"; - print "<TH>Type</TH>"; - print "<TH>Length</TH>"; - print "</TR>"; + print "<TABLE BORDER=\"1\">"; + print "<TR>"; + print "<TH>Name</TH>"; + print "<TH>Type</TH>"; + print "<TH>Length</TH>"; + print "</TR>"; $ncols = OCINumCols($stmt); - for ( $i = 1; $i <= $ncols; $i++ ) { + for ( $i = 1; $i <= $ncols; $i++ ) { $column_name = OCIColumnName($stmt,$i); $column_type = OCIColumnType($stmt,$i); $column_size = OCIColumnSize($stmt,$i); - print "<TR>"; - print "<TD>$column_name</TD>"; - print "<TD>$column_type</TD>"; - print "<TD>$column_size</TD>"; - print "</TR>"; + print "<TR>"; + print "<TD>$column_name</TD>"; + print "<TD>$column_type</TD>"; + print "<TD>$column_size</TD>"; + print "</TR>"; } OCIFreeStatement($stmt); OCILogoff($conn); - print "</PRE>"; - print "</HTML>\n"; + print "</PRE>"; + print "</HTML>\n"; ?> +]]> </programlisting> </example> </para> @@ -1225,11 +1326,13 @@ <example> <title>OCIServerVersion</title> <programlisting> -<?php +<![CDATA[ +<?php $conn = OCILogon("scott","tiger"); print "Server Version: " . OCIServerVersion($conn); OCILogOff($conn); ?> +]]> </programlisting> </example> </para> @@ -1252,34 +1355,36 @@ <para> <function>OCIStatementType</function> 함수는 다음중 하나를 리턴한다: <orderedlist> - <listitem><simpara> "SELECT"</simpara></listitem> - <listitem><simpara> "UPDATE"</simpara></listitem> - <listitem><simpara> "DELETE"</simpara></listitem> - <listitem><simpara> "INSERT"</simpara></listitem> - <listitem><simpara> "CREATE"</simpara></listitem> - <listitem><simpara> "DROP"</simpara></listitem> - <listitem><simpara> "ALTER"</simpara></listitem> - <listitem><simpara> "BEGIN"</simpara></listitem> - <listitem><simpara> "DECLARE"</simpara></listitem> - <listitem><simpara> "UNKNOWN"</simpara></listitem> + <listitem><simpara> "SELECT"</simpara></listitem> + <listitem><simpara> "UPDATE"</simpara></listitem> + <listitem><simpara> "DELETE"</simpara></listitem> + <listitem><simpara> "INSERT"</simpara></listitem> + <listitem><simpara> "CREATE"</simpara></listitem> + <listitem><simpara> "DROP"</simpara></listitem> + <listitem><simpara> "ALTER"</simpara></listitem> + <listitem><simpara> "BEGIN"</simpara></listitem> + <listitem><simpara> "DECLARE"</simpara></listitem> + <listitem><simpara> "UNKNOWN"</simpara></listitem> </orderedlist></para> <para> <example> <title>Code examples</title> <programlisting> -<?php - print "<HTML><PRE>"; +<![CDATA[ +<?php + print "<HTML><PRE>"; $conn = OCILogon("scott","tiger"); $sql = "delete from emp where deptno = 10"; $stmt = OCIParse($conn,$sql); if ( OCIStatementType($stmt) == "DELETE" ) { - die "You are not allowed to delete from this table<BR>"; + die "You are not allowed to delete from this table<BR>"; } OCILogoff($conn); - print "</PRE></HTML>"; + print "</PRE></HTML>"; ?> +]]> </programlisting> </example> </para> @@ -1290,7 +1395,7 @@ <refnamediv> <refname>OCINewCursor</refname> <refpurpose> - Return a new cursor (Statement-Handle) - use to bind ref-cursors. + 새로운 커서(구문 핸들)를 리턴한다 - ref-cursor를 +연계하기위함. </refpurpose> </refnamediv> <refsect1> @@ -1302,14 +1407,14 @@ </funcprototype> </funcsynopsis> <para> - <function>OCINewCursor</function> allocates a new statement handle - on the specified connection. + <function>OCINewCursor</function>함수는 특정 접속점에 관한 + 새로운 구문 핸들을 할당한다. </para> <para> - <example> - <title>Using a REF CURSOR from a stored procedure</title> + <example> <title>스토어드 프로시저에 REF CURSOR 사용하기</title> <programlisting> -<?php +<![CDATA[ +<?php // suppose your stored procedure info.output returns a ref cursor in :data $conn = OCILogon("scott","tiger"); @@ -1328,46 +1433,49 @@ OCIFreeStatement($curs); OCILogoff($conn); ?> +]]> </programlisting> </example> </para> <para> <example> - <title>Using a REF CURSOR in a select statement</title> + <title>SELECT 구문에 REF CURSOR 사용하기</title> <programlisting> -<?php -print "<HTML><BODY>"; +<![CDATA[ +<?php +print "<HTML><BODY>"; $conn = OCILogon("scott","tiger"); $count_cursor = "CURSOR(select count(empno) num_emps from emp " . "where emp.deptno = dept.deptno) as EMPCNT from dept"; $stmt = OCIParse($conn,"select deptno,dname,$count_cursor"); ociexecute($stmt); -print "<TABLE BORDER=\"1\">"; -print "<TR>"; -print "<TH>DEPT NAME</TH>"; -print "<TH>DEPT #</TH>"; -print "<TH># EMPLOYEES</TH>"; -print "</TR>"; +print "<TABLE BORDER=\"1\">"; +print "<TR>"; +print "<TH>DEPT NAME</TH>"; +print "<TH>DEPT #</TH>"; +print "<TH># EMPLOYEES</TH>"; +print "</TR>"; while (OCIFetchInto($stmt,&$data,OCI_ASSOC)) { - print "<TR>"; + print "<TR>"; $dname = $data["DNAME"]; $deptno = $data["DEPTNO"]; - print "<TD>$dname</TD>"; - print "<TD>$deptno</TD>"; + print "<TD>$dname</TD>"; + print "<TD>$deptno</TD>"; ociexecute($data[ "EMPCNT" ]); while (OCIFetchInto($data[ "EMPCNT" ],&$subdata,OCI_ASSOC)) { $num_emps = $subdata["NUM_EMPS"]; - print "<TD>$num_emps</TD>"; + print "<TD>$num_emps</TD>"; } - print "</TR>"; + print "</TR>"; } -print "</TABLE>"; -print "</BODY></HTML>"; +print "</TABLE>"; +print "</BODY></HTML>"; OCIFreeStatement($stmt); OCILogoff($conn); ?> +]]> </programlisting> </example> </para> @@ -1390,7 +1498,7 @@ </funcprototype> </funcsynopsis> <para> - <function>OCIFreeStatement</function> 함수는 자원 해제에 성공하면 &true;를 + <function>OCIFreeStatement</function>함수는 자원 해제에 성공하면 +&true;를 리턴하고, 실패하면 &false;를 리턴한다. </para> </refsect1> @@ -1457,8 +1565,8 @@ 사용하는 <parameter>query</parameter>를 해석한다. 질의(query)가 유효하면 구문(statement)를 리턴한다. 그렇지 않으면 &false;를 리턴한다. - <parameter>query</parameter>인수는 어떤 유효한 SQL 구문(statement) - 도 될 수 있다. + <parameter>query</parameter>인수는 유효한 SQL 구문(statement)이나 + PL/SQL블록이 될 수 있다. </simpara> </refsect1> </refentry> @@ -1509,9 +1617,6 @@ </funcprototype> </funcsynopsis> <simpara> - <function>OCIInternalDebug</function> enables internal debug - output. Set <parameter>onoff</parameter> to 0 to turn debug - output off, 1 to turn it on. <function>OCIInternalDebug</function>함수는 내부 디버그 출력을 활성화 시킨다. <parameter>onoff</parameter>인수를 0으로 놓으면 비활성화 되고, @@ -1521,6 +1626,366 @@ </refentry> </reference> + <refentry id="function.ocicancel"> + <refnamediv> + <refname>OCICancel</refname> + <refpurpose>커서로부터 읽기를 취소한다</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>OCICancel</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + 커서로부터 더이상 데이터를 읽기를 원치않으면, + <function>OCICancel</function>함수를 쓰라. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocisetprefetch"> + <refnamediv> + <refname>OCISetPrefetch</refname> + <refpurpose>사용할 열의 갯수를 설정한다</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>OCISetPrefetch</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + <paramdef>int <parameter>rows</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + 사용할 열의 갯수를 설정한다. 기본값은 1열이다. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ociwritelobtofile"> + <refnamediv> + <refname>OCIWriteLobToFile</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>void <function>OCIWriteLobToFile</function></funcdef> + <paramdef>object <parameter>lob</parameter></paramdef> + <paramdef>string <parameter><optional>filename</optional></parameter></paramdef> + <paramdef>int <parameter><optional>start</optional></parameter></paramdef> + <paramdef>int <parameter><optional>lenght</optional></parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocisavelobfile"> + <refnamediv> + <refname>OCISaveLobFile</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCISaveLobFile</function></funcdef> + <paramdef>object <parameter>lob</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocisavelob"> + <refnamediv> + <refname>OCISaveLob</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCISaveLob</function></funcdef> + <paramdef>object <parameter>lob</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ociloadlob"> + <refnamediv> + <refname>OCILoadLob</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCILoadLob</function></funcdef> + <paramdef>object <parameter>lob</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicolumnscale"> + <refnamediv> + <refname>OCIColumnScale</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>OCIColumnScale</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + <paramdef>int <parameter>col</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicolumnprecision"> + <refnamediv> + <refname>OCIColumnPrecision</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>OCIColumnPrecision</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + <paramdef>int <parameter>col</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicolumntyperaw"> + <refnamediv> + <refname>OCIColumnTypeRaw</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>mixed <function>OCIColumnTypeRaw</function></funcdef> + <paramdef>int <parameter>stmt</parameter></paramdef> + <paramdef>int <parameter>col</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocinewcollection"> + <refnamediv> + <refname>OCINewCollection</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCINewCollection</function></funcdef> + <paramdef>int <parameter>conn</parameter></paramdef> + <paramdef>string <parameter>tdo</parameter></paramdef> + <paramdef>string <parameter><optional>shema</optional></parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocifreecollection"> + <refnamediv> + <refname>OCIFreeCollection</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCIFreeCollection</function></funcdef> + <paramdef>object <parameter>lob</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollassign"> + <refnamediv> + <refname>OCICollAssign</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollAssign</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + <paramdef>object <parameter>object</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollappend"> + <refnamediv> + <refname>OCICollAppend</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollAppend</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + <paramdef>object <parameter>object</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollassignelem"> + <refnamediv> + <refname>OCICollAssignElem</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollAssignElem</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + <paramdef>string <parameter>ndx</parameter></paramdef> + <paramdef>string <parameter>val</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollgetelem"> + <refnamediv> + <refname>OCICollGetElem</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollGetElem</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + <paramdef>string <parameter>ndx</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollmax"> + <refnamediv> + <refname>OCICollMax</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollMax</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicollsize"> + <refnamediv> + <refname>OCICollSize</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollSize</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + <refentry id="function.ocicolltrim"> + <refnamediv> + <refname>OCICollTrim</refname> + <refpurpose>Coming soon.</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>string <function>OCICollTrim</function></funcdef> + <paramdef>object <parameter>collection</parameter></paramdef> + <paramdef>int <parameter>num</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <simpara> + Coming soon. + </simpara> + </refsect1> + </refentry> + + </reference> + <!-- Keep this comment at the end of the file Local variables: mode: sgml @@ -1537,4 +2002,7 @@ sgml-local-catalogs:nil sgml-local-ecat-files:nil End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 -->