Проблема с php + oracle (OCI) - PullRequest
       1

Проблема с php + oracle (OCI)

0 голосов
/ 17 октября 2010

Исправимая фатальная ошибка: объект класса 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);

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

1 Ответ

1 голос
/ 17 октября 2010

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

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

oci_bind_by_name($stmt, ":items", $collection,-1, OCI_B_NTY);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...