Как я могу получить 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, но ничего не работает.
Спасибо за помощь.
Наконец-то получил это сам.
Я не знаю почему, но PDO :: PARAM_LOB в этом случае не работает.
Решение состоит в том, чтобы использовать PDO :: PARAM_STR следующим образом:
$ Statement-> BindParam (2, $ result, PDO :: PARAM_STR, 2048);
Других решений пока нет …