Oracle存储过程因绑定参数失败

时间:2017-11-27 17:31:41

标签: php oracle stored-procedures oracle-sqldeveloper parameterized-query

我在Oracle的一个包中有一个存储过程,它接受几个NUMBER类型作为参数,并且在显式传递整数时没有问题。

但是,在使用绑定参数时(在SQL Developer中),我收到错误Error report - Missing defines。在PHP中运行时,它会无声地失败。鉴于使用绑定参数的安全性好处,我宁愿不在PHP中连接查询并以这种方式执行(是的,我可以使用intval()并且它会处理它)因为这个问题超出了只有整数的包参数。

这在成功运行和验证数据库更改中都有效。

BEGIN package_name.procedure_name(
    1,
    2
); END;

但是,这不是。

BEGIN package_name.procedure_name(
    :VARIABLE_1,
    :VARIABLE_2
); END;

这两点都没有:

BEGIN package_name.procedure_name(
    VARIABLE_1 => :VARIABLE_1,
    VARIABLE_2 => :VARIABLE_2
); END;

在SQL Developer中运行调试提供了声明类型然后将它们作为变量传递的逻辑,但是添加绑定也失败了。

关于为什么产生错误的任何想法,假设程序在没有静态参数问题的情况下运行?

1 个答案:

答案 0 :(得分:0)

您可以这样使用:

SQL> variable VARIABLE_1 number;
SQL> variable VARIABLE_2 number;
SQL> BEGIN 
package_name.procedure_name(
    :VARIABLE_1,
    :VARIABLE_2
); 
END;/