数字或值错误:字符串缓冲区太小 - PHP + Oracle

vam*_*msi 0 php oracle stored-procedures

下面是我的程序

NOBL_TEC_TEST_PROC(v1 number,v2 out number)
Run Code Online (Sandbox Code Playgroud)

我的模型功能

public function testProc()
{
    $result = '';
    $db = "orcl";
    $conn = oci_connect("***", "****", $db);
    $sql = 'begin NOBL_TEC_TEST_PROC(222, :seqno); end;';
    $stmt = oci_parse($conn,$sql);
    oci_bind_by_name($stmt, ':seqno', $result);
    oci_execute($stmt);

    return $result;

}
Run Code Online (Sandbox Code Playgroud)

如果我给 IN 值 <10 它工作正常,但是当我尝试给 IN 值 >10 它给出以下错误。

<b>Warning</b>:  oci_execute(): ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 1 in....
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?有什么帮助吗?谢谢

小智 6

我知道有点晚了,但是您需要将缓冲区大小添加到您的 oci_bind_by_name

oci_bind_by_name($stmt, ':seqno', $result,2000);
Run Code Online (Sandbox Code Playgroud)

这应该可以解决您的问题