调用过程时错误的参数数量或类型错误

时间:2014-03-17 07:49:12

标签: oracle plsql syntax-error procedure

我怎样才能在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 
   )...

1 个答案:

答案 0 :(得分:3)

请参阅下面的更改,对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);
...