为什么oracle会回来..
ORA-06550:第9行,第3列:PLS-00306:调用' ADD_RULE_RANGE_ATTR'错误的参数数量或类型ORA-06550:第9行,第3列:PL / SQL:忽略语句
当我根据程序规范设置所有类型和参数时。
PROCEDURE add_rule_range_attr(
"p_name" IN VARCHAR2,
"p_entity" IN VARCHAR2,
"p_attribute" IN VARCHAR2,
"p_r_negate" IN NUMBER,
"p_ra_comparer1" IN VARCHAR2,
"p_ra_comparer2" IN VARCHAR2
);
最初我的代码在Oracle APEX环境中运行,其中过程的参数由输入变量填充(例如:PX_INPUT_NAME
),因此我必须确保我在参数中放入的所有变量是正确的数据类型。但是,在调用过程时,我使用的变量的缺省值对应于过程参数所请求的数据类型。
brg_manager.add_rule_range_attr(
p_name => v_name,
p_entity => v_entity,
p_attribute => v_attribute,
p_r_negate => v_negate,
p_ra_comparer1 => v_comparer1,
p_ra_comparer2 => v_comparer2
);
查看this sqlfiddle的工作示例。
答案 0 :(得分:5)
您需要省略"
(过程定义)或使用"
围绕参数标识符调用它:
brg_manager.add_rule_range_attr(
"p_name" => v_name,
"p_entity" => v_entity,
"p_attribute" => v_attribute,
"p_r_negate" => v_negate,
"p_ra_comparer1" => v_comparer1,
"p_ra_comparer2" => v_comparer2
);
<强> DBFiddle Demo 强>
来自Schema Object Names and Qualifiers :
架构对象命名规则
每个数据库对象都有一个名称。在SQL语句中,您表示具有带引号的标识符或非带引号的标识符的对象的名称。
带引号的标识符以双引号(&#34;)开头和结尾。如果使用带引号的标识符命名架构对象,则每次引用该对象时都必须使用双引号。