如何更正“” PLS-00306:调用“”时参数的数量或类型错误

How to correct '' PLS-00306: wrong number or types of arguments in call to ''

我想调用一个函数(ADD_PRICELIST)来获取这个函数中的值:

*add_pricelist 函数编译成功。

CREATE OR REPLACE FUNCTION PRICELIST_DATA(
  CPRIC_DATA_ID CUSTOMERS.CUSTOMERS_ID%TYPE,
  IPRIC_DATA_ID ITEMS.ITEMS_ID%TYPE
)
RETURN NUMBER AS
  L_PRICELIST_DATA_ID NUMBER;
BEGIN
        L_PRICELIST_DATA_ID := ADD_PRICELIST(ROUND(dbms_random.value(0,10),3)); 
      END IF;
  RETURN L_PRICELIST_DATA_ID;    
END PRICELIST_DATA;

给我:

PLS-00306: wrong number or types of arguments in call to ADD_PRICELIST

你的ADD_PRICELIST函数作为签名:

CREATE OR REPLACE FUNCTION ADD_PRICELIST(
  L_PLIST_CUST_ID CUSTOMERS.CUSTOMERS_ID%TYPE,
  L_PLIST_ITEMS_ID ITEMS.ITEMS_ID%TYPE,
  P_PRICELIST_PRICE NUMBER
) RETURN NUMBER

这需要 3 个值和 returns 1 个值(顺便说一句,它总是 return NULL)。

你只用一个参数调用它:

L_PRICELIST_DATA_ID := MINI_ERP.ADD_PRICELIST(
  ROUND(dbms_random.value(0,10),3)
); 

这给你错误:

PLS-00306: wrong number or types of arguments in call to ADD_PRICELIST

要解决这个问题,您需要传递其他 2 个参数,以便函数具有所有 3 个预期参数。

例如:

L_PRICELIST_DATA_ID := MINI_ERP.ADD_PRICELIST(
  ROUND(dbms_random.value(0,10),3),
  ROUND(dbms_random.value(0,10),3),
  ROUND(dbms_random.value(0,10),3)
);