2010-10-17 2 views
0

Catchable фатальная ошибка: Объект класса OCI-Collection не может быть преобразован в строку в E: \ PHP \ HTDOCS \ PHPRPC \ func.php на линии 318Проблема с PHP + Oracle (OCI)

Код:

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

Может ли кто-нибудь помочь мне разобраться с этой проблемой? Заранее спасибо.

+0

Мой PHP версии 5.2.12, и оракул версия Oracle 10G –

ответ

1

Проблема заключается в том, что вы привязываете объект коллекции, в то время как Oracle ожидает, что связанный тип будет SQLT_CHR, например. a VARCHAR. Таким образом, Oracle попытается использовать связанный объект в контексте строки, что невозможно, потому что коллекция, по-видимому, не имеет метода __toString. Следовательно, вы получаете ошибку, что объект не может быть преобразован в строку.

Я не уверен в этом, но попробуйте поставить другой тип в связующей вызова, например:

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

Спасибо большое !!! проблема решена таким образом! –

Смежные вопросы