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

Fle*_*euv 2 oracle plsql stored-procedures 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
);
Run Code Online (Sandbox Code Playgroud)

最初我的代码在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
);
Run Code Online (Sandbox Code Playgroud)

看看这个sqlfiddle的工作示例.

Luk*_*zda 5

您需要省略"(过程定义)或使用"around参数标识符调用它:

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
);
Run Code Online (Sandbox Code Playgroud)

DBFiddle演示


架构对象名称和限定符:

模式对象命名规则

每个数据库对象都有一个名称.在SQL语句中,您表示具有带引号的标识符或非带引号的标识符的对象的名称.

带引号的标识符以双引号(")开头和结尾.如果使用带引号的标识符命名模式对象,则每次引用该对象时都必须使用双引号.