[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 メーリングリストの案内