我在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中运行调试提供了声明类型然后将它们作为变量传递的逻辑,但是添加绑定也失败了。
关于为什么产生错误的任何想法,假设程序在没有静态参数问题的情况下运行?
答案 0 :(得分:0)
您可以这样使用:
SQL> variable VARIABLE_1 number;
SQL> variable VARIABLE_2 number;
SQL> BEGIN
package_name.procedure_name(
:VARIABLE_1,
:VARIABLE_2
);
END;/