【发布时间】:2015-04-10 17:58:40
【问题描述】:
当我在 PHP 中使用 PDO 驱动程序调用存储过程时,如何获得输出 CLOB?
Oracle 中的过程是这样定义的:
PROCEDURE COPI_SCHE(P_ID IN LOCT_SCHE.ID%TYPE,
P_SCHE OUT CLOB)
其中 LOCT_SCHE.ID%TYPE 是 NUMBER (10)
如果我用 TOAD 调用它,它可以工作:
宣布 测试 CLOB; 开始 LOC_SH.COPI_SCHE(884, 测试); dbms_output.put_line(测试); 结尾 ;输出结果:
{ “ID”:“915”,“FK_RA_NO_PERM”:“1234567”,“TYPE_SCHE”:“PLP”,“DESC_SCHE”:“测试 4”,“AN”:“”,“TIMB_MAJ”:“15 -04-10", "USAG_MAJ" : "用户" }
所以,在 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); $语句->执行();但是甲骨文抛出:
ORA-06553:PLS-306:调用“COPI_SCHE”时参数的数量或类型错误
怎么了?
我尝试了许多与 PDO::PARAM_LOB|PDO::PARAM_INPUT_OUTPUT 的关联,但没有任何效果。
感谢您的帮助。
【问题讨论】:
-
数据库中LOCT_SCHE.ID%TYPE的类型是什么?
-
LOCT_SCHE.ID%TYPE 是 NUMBER (10)
标签: php stored-procedures pdo phalcon clob