0

可捕获的致命错误:第 318 行的 E:\php\htdocs\PHPRPC\func.php 中的 OCI-Collection 类的对象无法转换为字符串

编码:

$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. 因此,Oracle 将尝试在字符串上下文中使用绑定对象,这是不可能的,因为该集合显然没有__toString实现任何方法。因此,您会收到无法将对象转换为字符串的错误。

我对此不确定,但尝试在绑定调用中提供不同的类型,例如:

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