Процедура вызова PHP / PDO с выводом CLOB в формате json

Как я могу получить CLOB вывода из моей хранимой процедуры, когда я вызываю ее с драйвером PDO в PHP?

Процедура определяется следующим образом в Oracle:

PROCEDURE COPI_SCHE (P_ID IN LOCT_SCHE.ID% TYPE,
P_SCHE OUT CLOB)

Где LOCT_SCHE.ID% TYPE НОМЕР (10)

Если я называю это с TOAD, это работает:


DECLARE
тест CLOB;
НАЧАТЬ
LOC_SH.COPI_SCHE (884, TEST);
dbms_output.put_line (тест);
КОНЕЦ

;

Выходной результат:

{"ID": "915", "FK_RA_NO_PERM": "1234567", "TYPE_SCHE": "PLP", "DESC_SCHE": "test 4", "AN": "", "TIMB_MAJ": "15-04- 10 "," USAG_MAJ ":" USER "}

Итак, в PHP я пытаюсь это:


$ connection = $ this-> getConnection ();
$ idGrouping = 884;
$ sql = "CALL LOC_SH.COPI_SCHE (?,?)";
$ Statement = $ Connection-> prepare ($ sql);
$ Statement-> BindParam (1, $ idGrouping, PDO :: PARAM_INT);
$ Statement-> BindParam (2, $ result, PDO :: PARAM_LOB);
$ Оператор-> Execute ();

Но Оракул брось

ORA-06553: PLS-306: неверный номер или типы аргументов при вызове 'COPI_SCHE'

В чем дело?

Я пробую много ассоциаций с PDO :: PARAM_LOB | PDO :: PARAM_INPUT_OUTPUT, но ничего не работает.

Спасибо за помощь.

0

Решение

Наконец-то получил это сам.

Я не знаю почему, но PDO :: PARAM_LOB в этом случае не работает.

Решение состоит в том, чтобы использовать PDO :: PARAM_STR следующим образом:

$ Statement-> BindParam (2, $ result, PDO :: PARAM_STR, 2048);

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector