Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2003/01/14

counter hits
since 1999/11/06


裏OCI関数マニュアル - Collection編

alertここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。

Oracle関数についてもずいぶん前にやりましたが、今度は裏(?)OCIマニュアルです(2002/10/21時点でマニュアルに説明がないだけで、関数のAPIは表示されています)。とりあえず、Collection関連のみです。

caution今回確認した環境は、(Web)Apache1.3.27+Oracle8.1.7iEE+PHP4.3.0pre1、(DB)Oracle9.0.1iな環境です。それ以外の環境(特にOracle9.0.1)では動作の確認は取れていません。

memo[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");
                       :
    // OCICollAppend($coll, "foobar"); と同じ
    $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");
                       :
    // OCICollAssign($coll, $coll2); と同じ
    $coll2->append($coll);
                       :
?>

OCICollAssignElem  string OCICollAssignElem(object collection, string ndx, string val)

collection[ndx]の値をvalにします。現時点でこの関数は使えないようですが、メソッドでアクセスできます。


<?php
                       :
    $coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
                       :
    // OCICollAssignElem($coll, 3, "fuga"); と同じ
    $coll->assignElem(3, "fuga");
                       :
?>

OCICollGetElem  string OCICollGetElem(object collection, string ndx)

collection[ndx]の値を取得します。現時点でこの関数は使えないようですが、メソッドでアクセスできます。


<?php
                       :
    $coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
                       :
    // OCICollGetElem($coll, 5); と同じ
    $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");
                       :
    // OCICollMax($coll); と同じ。「max=100」と表示される。
    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");
                       :
    // OCICollTrim($coll, 2); と同じ。最後の2要素が削除される。
    $coll->trim(2);
                       :
?>

OCIFreeCollection  string OCIFreeCollection(object lob)

コレクションで使用したりソースを解放します。


<?php
                       :
    $coll = OCINewCollection($dbc, "TEST_ARR", "SCOTT");
                       :
    // $coll->free(); でも可
    OCIFreeCollection($coll);
                       :
?>



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2003 by Hideyuki SHIMOOKA all rights reserved.