Php/docs/function.oci-parse

提供:Dev Guides
< Php
移動先:案内検索

oci_parse

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_parse実行のために Oracle の文をパースする


説明

oci_parse ( resource $connection , string $sql_text ) : resource

connection を使って sql_text をパースし、ステートメント ID を返します。この ID は、oci_bind_by_name(), oci_execute() や他の関数で使用されます。

ステートメント ID を解放するには、 oci_free_statement() を使うか、あるいは 変数に null を代入します。


パラメータ

connection

oci_connect()oci_pconnect() あるいは oci_new_connect() が返す Oracle 接続 ID。

sql_text

SQL あるいは PL/SQL ステートメント。

SQL の最後にセミコロン (";") をつけては いけません。一方、PL/SQL ステートメントの最後はセミコロン (";") を つけなければなりません


返り値

成功した場合にステートメントハンドル、あるいはエラー時に false を返します。


例1 oci_parse() での SQL 文の例

<?php$conn = oci_connect('hr', 'welcome', 'localhost/XE');// パースします。SQL 文の最後にはセミコロンがないことに注意しましょう$stid = oci_parse($conn, 'SELECT * FROM employees');oci_execute($stid);echo "<table border='1'>\n";while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {    echo "<tr>\n";    foreach ($row as $item) {        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";    }    echo "</tr>\n";}echo "</table>\n";?>

例2 oci_parse() での PL/SQL の例

<?php/*  この PHP プログラムを実行する前に、SQL*Plus や SQL Developer で  ストアドプロシージャを作っておきます  CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS  BEGIN      p2 := p1 * 2;  END;*/$conn = oci_connect('hr', 'welcome', 'localhost/XE');if (!$conn) {    $e = oci_error();    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);}$p1 = 8;// PL/SQL プログラムをパースするには、文字列の最後にセミコロンが必要です$stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');oci_bind_by_name($stid, ':p1', $p1);oci_bind_by_name($stid, ':p2', $p2, 40);oci_execute($stid);print "$p2\n";   // 16 と表示しますoci_free_statement($stid);oci_close($conn);?>

注意

注意:

この関数は sql_text を検証 しませんsql_text が有効な SQL あるいは PL/SQL 文かどうかを検証する唯一の方法 - それは実行することです。

参考