【问题标题】:Wrong number or types of arguments error while calling procedure调用过程时出现错误数量或类型的参数错误
【发布时间】:2014-03-17 07:49:12
【问题描述】:

如何在 Oracle 中的另一个过程中调用过程?我正在尝试如下但我收到错误“PLS-00306 (325: 13): PLS-00306: 调用中的参数数量或类型错误” TITLE_CRUD'"

PROCEDURE create_title(
        P_TITLE varchar2,
        P_USER varchar2,
        P_ERR OUT VARCHAR2 
   )
   IS    
   BEGIN  
        IF P_TITLE IS NULL THEN
            P_ERR := 'Null value';
        ELSE
            title_crud('I',NULL,P_TITLE,P_USER);      
        END IF;  
   END;


 PROCEDURE title_crud(
        P_OP_TYPE VARCHAR2,
        P_ID number,
        P_TITLE varchar2,
        P_USER varchar2,
        P_ERR OUT VARCHAR2 
   )...

【问题讨论】:

  • 在对 title_crud 的调用中,您定义了 4 个参数,但您需要一个来保存 P_ERR OUT 变量。

标签: oracle plsql syntax-error procedure


【解决方案1】:

请参阅下面的更改,对title_crud 的调用没有变量来保存它返回的内容(p_err)

PROCEDURE create_title(
        P_TITLE varchar2,
        P_USER varchar2,
        P_ERR OUT VARCHAR2 
   )
   IS    
   BEGIN  
        IF P_TITLE IS NULL THEN
            P_ERR := 'Null value';
        ELSE
            title_crud('I',NULL,P_TITLE,P_USER,P_ERR); -- Extra Parameter      
        END IF;  
   END;


 PROCEDURE title_crud(
        P_OP_TYPE VARCHAR2,
        P_ID number,
        P_TITLE varchar2,
        P_USER varchar2,
        P_ERR OUT VARCHAR2 
   )...

一个容易犯的错误,但我发现在调用通过命名符号传递参数的过程时更容易避免。您对 title_crud 的调用变为

...
 title_crud(P_OP_TYPE => 'I',
            P_ID      =>  NULL,
            P_TITLE   =>  P_TITLE,
            P_USER    =>  P_USER,
            P_ERR     =>  P_ERR);
...

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2021-11-30
    • 2011-07-01
    • 2021-12-11
    • 2019-12-23
    相关资源
    最近更新 更多