0

キャッチ可能な致命的なエラー: クラス OCI-Collection のオブジェクトを E:\php\htdocs\PHPRPC\func.php 行 318 の文字列に変換できませんでした

コード:

$sql='BEGIN NCCM_INTERFACE_HISDETAIL(:orgcode,:inhiscode,:inputer,:items); END;';
$conn=oci_connect('chis','chis123','ORCL','UTF8');
$stmt = oci_parse($conn, $sql);
$collection = oci_new_collection($conn,"NCCM_INTERFACE_TABLE");
foreach ($items as $item)
{
    $collection->append($item);
}
oci_bind_by_name($stmt, ":orgcode", $orgcode, -1);
oci_bind_by_name($stmt, ":inhiscode", $inhiscode, -1);
oci_bind_by_name($stmt, ":inputer", $inputer, -1);
oci_bind_by_name($stmt, ":items", $collection,-1); //here the error line
$s=oci_execute($stmt);

この問題を解決するのを手伝ってくれる人はいますか? 前もって感謝します。

4

1 に答える 1

1

問題は、Oracle がバインドされた型SQLT_CHRVARCHAR. __toStringしたがって、Oracle はバインドされたオブジェクトを文字列コンテキストで使用しようとしますが、コレクションには明らかにメソッドが実装されていないため、これは不可能です。したがって、オブジェクトを文字列に変換できなかったというエラーが発生します。

これについてはよくわかりませんが、バインディング呼び出しで別のタイプを指定してみてください。たとえば、次のようになります。

oci_bind_by_name($stmt, ":items", $collection,-1, OCI_B_NTY);
于 2010-10-17T11:38:32.817 に答える