Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有不同IN-OUT参数长度的ZF2和Oracle存储过程调用_Php_Oracle_Stored Procedures_Zend Framework2 - Fatal编程技术网

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

Php 具有不同IN-OUT参数长度的ZF2和Oracle存储过程调用,php,oracle,stored-procedures,zend-framework2,Php,Oracle,Stored Procedures,Zend Framework2,其中$someString的长度为30 现在,这个参数是“IN-OUT”类型,在过程中,它被扩展为一些额外的字符(输入长度:30,但输出40) 注: 我甚至没有看到这个过程代码,但经过多次测试后,我看到它只是将字符附加到初始字符串,而没有进行任何修剪等 使用纯php(将长度设置为最大可能的输出长度)很简单,但使用zf2的Zend\Db\Adapter\Driver\Oci8\语句 调用oci_bind_by_name()时总是使用-1作为长度(因此OUT length=IN length=ini

其中$someString的长度为30

现在,这个参数是“IN-OUT”类型,在过程中,它被扩展为一些额外的字符(输入长度:30,但输出40)

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

使用纯php(将长度设置为最大可能的输出长度)很简单,但使用zf2的Zend\Db\Adapter\Driver\Oci8\语句 调用oci_bind_by_name()时总是使用-1作为长度(因此OUT length=IN length=initial string的长度),这似乎使得无法使用这种过程行为(获取ORA-06502:PL/SQL:numeric或value error:character string buffer太小)

或者我错了,有没有可能(除了不使用FW方法或重写它们)实现所描述的目标


提前感谢…

请记住$someString是作为引用传递的,因此如果您发送一个30长度的字符,您将获得另一个30长度的字符作为最大值


我建议您增加长度。

Hi,正如我在原始问题中所述,$someString的长度无关紧要-过程总是在末尾附加额外的字符。通常用这种方式定义字符串变量:$rtrn=str_repeat(“”,4000);
$parameterContainer = new \Zend\Db\Adapter\ParameterContainer();
$parameterContainer->offsetSet('paramName', $someString, $parameterContainer::TYPE_STRING);