PHP: вызов Oracle хранимой процедуры, которая возвращает таблицу - PullRequest
0 голосов
/ 30 мая 2011

Hello у меня есть хранимый процесс Oracle, который принимает 2 параметра: userid в качестве входного параметра и таблицу Oracle с 2 столбцами в качестве второго выходного параметра: как я могу вызвать процедуру из PHP? Я думаю, что проблема заключается в oci_bind_ * для второго параметра: я пробовал oci_bind_array_by_name, но я всегда получаю 'PLS-00306: неправильный номер или типы аргументов при вызове GET_VALUES'. Кто-нибудь может мне помочь, пожалуйста?

Вот мой код:

$tab=array();
$query = "begin GET_VALUES(:P_CUSTOMERCODE,:P_TAB); end;";
$stmt = oci_parse($ora_conn, $query) or die(oci_error());
oci_bind_by_name($stmt,":P_CUSTOMERCODE",$codUtente,255);
oci_bind_array_by_name($stmt,":P_TAB",$tab,100,100,SQLT_CHR);
oci_execute($stmt) or die(oci_error());

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

Не уверен, что многостолбцовая таблица будет работать с именем oci_bind_array_by_name. Глядя на руководство по php, вы можете использовать его для связывания простого varray, связанного массива или вложенной таблицы, в основном просто как список значений из 1 столбца. Вы должны указать тип массива в параметре "type", используя, например, SQLT_CHR для varchar2 (если вы определили массив как: type t_array is table of varchar2(100) index by pls_integer).

Похоже, вы создали пользовательскую таблицу с пользовательским типом записи (?), Что-то вроде:

type t_rec is record (
col1 number,
col2 varchar2(100)
);
type t_tab is table of t_rec;

Я не вижу, где можно связать t_tab как выходной параметр, используя вызовы php oci8, но я могу ошибаться.

0 голосов
/ 30 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...