久々の挫折…
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 リスト作成;
/
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 リスト作成;
/
コメント
コメントを投稿