ORA-06550:参数的数量或类型错误

时间:2018-03-31 10:36:03

标签: oracle stored-procedures plsql oracle-apex

为什么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的工作示例。

1 个答案:

答案 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;)开头和结尾。如果使用带引号的标识符命名架构对象,则每次引用该对象时都必须使用双引号。