php的问题+;甲骨文(保监处)

php的问题+;甲骨文(保监处),php,oracle,oracle-call-interface,Php,Oracle,Oracle Call Interface,可捕获的致命错误:类OCI集合的对象无法转换为第318行E:\php\htdocs\PHPRPC\func.php中的字符串 守则: $sql='BEGIN NCCM_INTERFACE_HISDETAIL(:orgcode,:inhiscode,:inputer,:items); END;'; $conn=oci_connect('chis','chis123','ORCL','UTF8'); $stmt = oci_parse($conn, $sql); $collection = oci_

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

守则:

$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);

有人能帮我解决这个问题吗?提前感谢。

问题是您正在绑定一个集合对象,而Oracle希望绑定的类型是
SQLT\u CHR
,例如
VARCHAR
。因此,Oracle将尝试在字符串上下文中使用绑定对象,这是不可能的,因为集合显然没有实现
\uu toString
方法。因此,您会得到一个错误,即对象无法转换为字符串

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

oci_bind_by_name($stmt, ":items", $collection,-1, OCI_B_NTY);

我的php版本是5.2.12,oracle版本是oracle 10g