|
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。
Oracle関数についてもずいぶん前にやりましたが、今度は裏(?)OCIマニュアルです(2002/10/21時点でマニュアルに説明がないだけで、関数のAPIは表示されています)。とりあえず、Collection関連のみです。
今回確認した環境は、(Web)Apache1.3.27+Oracle8.1.7iEE+PHP4.3.0pre1、(DB)Oracle9.0.1iな環境です。それ以外の環境(特にOracle9.0.1)では動作の確認は取れていません。
[2002/10/31] (Web)Apache1.3.27+Oracle8.1.7iSE+PHP4.3.0pre2/4.2.2、(DB)Oracle8.1.5iな環境でも動作の確認が取れました。おそらく、Oracle8.1.xiであれば、Standard Edition/Enterprise Editionいずれも可能と思います(8.1.5i/9.0.xの情報があれば、ご連絡をお願いします)
OCINewCollection string OCINewCollection(int conn, string tdo [, string shema])
新規コレクション(VARRAY型)を作成します。引数は、VARRAY型のTYPE名、スキーマ名で、Oracleではありがちですが大文字で指定する必要があります。戻り値はコレクションオブジェクトです。これ以降の操作は、このコレクションオブジェクトを使います。また、オブジェクトということで、OCIColl~関数に対応するメソッドが用意されています。
<?php
$dbc = OCILogon("scott","tiger", "orcl");
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
?>
OCICollAppend string OCICollAppend(object collection, object object)
コレクションの最後に要素を追加します。現時点でこの関数は使えないようですが、メソッドでアクセスできます。
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
$coll->append("foobar");
:
?>
OCICollAssign string OCICollAssign(object collection, object object)
あるコレクションを別のコレクションにディープコピーします。配列の内容コピーのイメージで、第1引数のコレクションが第2引数のコレクションにコピーされます。現時点でこの関数は使えないようですが、メソッドでアクセスできます。メソッドの場合は、オブジェクトの内容を引数の内容で上書きします。
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
$coll2 = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
$coll2->append($coll);
:
?>
OCICollAssignElem string OCICollAssignElem(object collection, string ndx, string val)
collection[ndx]の値をvalにします。現時点でこの関数は使えないようですが、メソッドでアクセスできます。
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
$coll->assignElem(3, "fuga");
:
?>
OCICollGetElem string OCICollGetElem(object collection, string ndx)
collection[ndx]の値を取得します。現時点でこの関数は使えないようですが、メソッドでアクセスできます。
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
$coll->getElem(5);
:
?>
OCICollMax string OCICollMax(object collection)
コレクションの最大サイズを取得します。現時点でこの関数は使えないようですが、メソッドでアクセスできます。具体的には、CREATE TYPEしたときのVARRAYのサイズになります。
CREATE OR REPLACE TYPE test_arr AS VARRAY(100) OF VARCHAR2(10);
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
echo "max=" . $coll->max();
:
?>
OCICollSize string OCICollSize(object collection)
コレクションの最大サイズを取得します。現時点でこの関数は使えないようですが、メソッドでアクセスできます。具体的には、CREATE TYPEしたときのVARRAYのサイズになります。サンプルスクリプトですが、ストアドプロシージャ・ファンクションから配列を受け取るをご覧下さい。
OCICollTrim string OCICollTrim(object collection, int num)
指定数の要素をコレクションの最後から切り捨てます。現時点でこの関数は使えないようですが、メソッドでアクセスできます。
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
$coll->trim(2);
:
?>
OCIFreeCollection string OCIFreeCollection(object lob)
コレクションで使用したりソースを解放します。
<?php
:
$coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
:
OCIFreeCollection($coll);
:
?>
|