Как я могу получить выходной 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 test CLOB; BEGIN LOC_SH.COPI_SCHE(884, TEST); dbms_output.put_line(test); END ;
Выходной результат:
{ "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); $statement->execute();
Но Oracle бросает:
ORA-06553: PLS-306: wrong number or types of arguments in call to 'COPI_SCHE'
Что случилось?
Я пробую множество ассоциаций с PDO::PARAM_LOB|PDO::PARAM_INPUT_OUTPUT, но ничего не работает.
Спасибо за помощь.