ZF2和Oracle存储过程调用具有不同的IN OUT参数长度

时间:2014-08-25 13:00:14

标签: php oracle stored-procedures zend-framework2

$parameterContainer = new \Zend\Db\Adapter\ParameterContainer();
$parameterContainer->offsetSet('paramName', $someString, $parameterContainer::TYPE_STRING);

其中$ someString的长度为30。

现在,这个参数是“IN OUT”类型,并且在程序中它正在扩展一些额外的字符(输入长度​​:30但输出40)。

注意: 我甚至没有看到这个程序代码,但经过多次测试后我发现它只是将字符附加到初始字符串而没有修剪等...

简单的纯PHP(设置长度到最大可能的输出长度),但在zf2的 Zend \ Db \ Adapter \ Driver \ Oci8 \ Statement oci_bind_by_name()总是被调用-1作为长度(因此OUT长度= IN长度=初始字符串的长度),这似乎使得无法使用那种过程行为(得到 ORA-06502:PL / SQL:数字或值错误:字符串缓冲区太小)。

或者我错了,有没有可能(其他不使用FW方法或覆盖它们)来实现所描述的目标?

提前致谢...

1 个答案:

答案 0 :(得分:0)

记住$ someString是作为参考传递的,所以如果你发送一个30长度的字符,你将获得另外30个长度字符作为最大值。

我建议你增加长度。