[PHP-users 23546]ストアドプロシージャから配列を取得できない

y-matsuda @ nm.mbcl.co.jp y-matsuda @ nm.mbcl.co.jp
2004年 11月 5日 (金) 10:29:35 JST


matsudaと言います。よろしくお願い致します。

Oracleのストアドプロシージャ・ストアドファンクションから
配列の値を取得したいのですが、うまくいっておりません。
CharやINTEGERの値は取得出来ました。

SQL*Plus上で作成したストアドプロシージャにアクセスすると値は受け取る事が出
来ているのですが
PHPで下記のソースを作成し実行すると値が取得出来ません。
「サーバーがみつかりません」のページが表示されてしまいます。

何かお気づきの点がありましたらご指摘いただけないでしょうか

//    PHP
$conn = OCILogon("scott","tiger","orcl");

$coll = OCINewCollection($conn,"TEST_ARR");
$stmt = OCIParse($conn, "BEGIN :RET := FUN_USERS('ABC00001'); END; ");

OCIBindByName ($stmt, ':RET', &$coll, -1, OCI_B_SQLT_NTY);

OCIExecute($stmt);

OCIFreeCollection($coll);
OCIFreeStatement($stmt);
OCILogOff($conn);

//    ORACLE
CREATE OR REPLACE
      TYPE TEST_ARR AS VARRAY(100) OF VARCHAR2(10);
/

CREATE OR REPLACE FUNCTION FUN_USERS      (
      NM IN VARCHAR2) RETURN TEST_ARR     IS

      CURSOR C1 IS
            SELECT USER_CD FROM SAMP_TABLE
            WHERE USER_ID = NM;

      C_REC C1%ROWTYPE;
      CNT INTEGER := 1;
      RET TEST_ARR := TEST_ARR();

BEGIN
      OPEN C1;

      LOOP
            FETCH C1 INTO C_REC;
            EXIT WHEN C1%NOTFOUND;
            RET.EXTEND(1);
            RET(CNT) := C_REC.USER_ID;
            CNT := CNT + 1;
      END LOOP;

      CLOSE C1;

      RETURN RET;

EXCEPTION
      WHEN OTHERS THEN
      RETURN TEST_ARR();
END;
/

環境は
Apache1.3.31
php4.3.7
Oracle8.1.7
IE6SP1
です






PHP-users メーリングリストの案内