久々の挫折…

PHP5.3 と Oracle10g でコーディングをしていまして…

PL/SQLでFunction(package)を作り、戻り値(またはOUT)で配列を取得したかった…

でも出来なかった。
はぁ…もうダメ。誰か教えて…



PHP側:
// DBコネクションの作成
$db_conn = oci_connect($ORA_UID, $ORA_PWD, $ORA_CONSTR);

$sql =<< BEGIN :ret := FIT_BOM_削除リストA.GET_LIST(:code, :kPattern, :message); END;
A;

$ret = oci_new_collection($db_conn, 'DBMS_SQL.VARCHAR2_TABLE');
$stmt = oci_parse($db_conn, $sql);

oci_bind_array_by_name($stmt, ":ret", $ret, 99, -1, SQLT_CHR);
oci_bind_by_name($stmt, ':code', $code, -1, SQLT_CHR);
oci_bind_by_name($stmt, ':kPattern', $kPattern, -1, SQLT_NUM);
oci_bind_by_name($stmt, ':message', $message, -1, SQLT_CHR);
oci_execute($stmt);

var_dump($ret);



PL/SQL側:(削りすぎて無ければ…)
CREATE OR REPLACE PACKAGE リスト作成
IS
TYPE リスト IS VARRAY(999) OF VARCHAR2(42);

FUNCTION GET_LIST(
P_コード IN VARCHAR2,
P_パターン IN NUMBER,
P_メッセージ OUT VARCHAR2
)RETURN リスト;

END リスト作成;
/

CREATE OR REPLACE PACKAGE BODY リスト作成
IS
FUNCTION GET_LIST(
P_コード IN VARCHAR2,
P_パターン IN NUMBER,
P_メッセージ OUT VARCHAR2
)
RETURN リスト IS
W_リスト リスト := リスト();
BEGIN
P_メッセージ := 'あいうえお';
RETURN W_リスト;

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RETURN NULL;

END GET_LIST;
END リスト作成;
/


コメント

このブログの人気の投稿

ヨドバシカメラの店舗購入履歴を見るには…

C# の WPF の DataGrid で 行を交互に背景色を変える+選択色を変える+カラムが無い所も変える…

Visual Studio の ホットリロードが動かない場合に確認するところ