我尝试调用返回数字的包中的存储函数:
function LOGIN(USERNAME in varchar2 default null
, PASSWORD in varchar2 default null)
return number;
它返回 0 或负整数表示失败,返回正整数表示成功。这是我调用该函数的 PHP 代码:
$sql = ":v_res := PACK.LOGIN(:p_user, :p_pass)";
$bindings = [ ':p_user' => 'test', ':p_pass' => '1234', ':v_res' => & $result];
$statement oci_parse($connection, $sql);
foreach ($bindings as $k => & $v) {
oci_bind_by_name($statement, $k, $v, customSizeOf($v), determineSqlType($v));
}
oci_execute($statement);
当我使用如图所示的结果(在绑定中使用之前未定义)时,它会返回“未定义的变量”警告。如果我取消警告并继续前进,它将与 null、-1 大小和类型 1 (SQLT_CHR) 绑定;如果我将结果定义$result = -1;
为 ,它与 -1、PHP_INT_SIZE 的大小和类型 3 (SQLT_INT) 绑定。
无论哪种方式,在执行时,都会产生此错误
ORA-01036: illegal variable name/number