Не знаю, что я делаю неправильно здесь:Error (20,5): PLS-00306: неверное число или типы аргументов в вызове «F_DREPTURI»
Так что у меня это:
CREATE OR REPLACE PACKAGE pachet_drepturi IS
FUNCTION f_identif_furnizor (codcomandahrana_ comanda_hrana.codcomandahrana%TYPE)
RETURN furnizor.codfurnizor%TYPE ;
FUNCTION f_drepturi (codangajat_ numeric,
codfurnizor_ furnizor.codfurnizor%TYPE,
tip_drept CHAR) RETURN BOOLEAN ;
END pachet_drepturi ;
/
/*drop type tip_drepturi;
create or replace type TIP_DREPTURI as object (
CODANGAJAT TIP_ANGAJAT,
codfurnizor tip_furnizor,
DREPT_INSERARE CHAR(1),
DREPT_MODIFICARE CHAR(1),
DREPT_STERGERE CHAR(1),
member function GETCODANGAJAT return TIP_ANGAJAT ,
member function GETCODFURNIZOR return TIP_FURNIZOR,
member function GETDREPT_INSERARE return CHAR ,
member function GETDREPT_MODIFICARE return CHAR,
member function getDREPT_STERGERE return CHAR
)FINAL;
/
--------------------------------------------------------------------------------
create or replace TYPE BODY TIP_DREPTURI AS
-------------------------------------------
MEMBER FUNCTION getCODANGAJAT RETURN TIP_ANGAJAT IS
BEGIN
RETURN SELF.CODANGAJAT ;
END getCODANGAJAT ;
-------------------------------------------
MEMBER FUNCTION getcodfurnizor RETURN tip_furnizor IS
begin
RETURN SELF.codfurnizor ;
END getcodfurnizor ;
-----------------------------------------------------------------
MEMBER FUNCTION getDREPT_INSERARE RETURN char IS
begin
RETURN SELF.DREPT_INSERARE ;
end GETDREPT_INSERARE ;
------------------------------------------------------------------
MEMBER FUNCTION getDREPT_MODIFICARE RETURN char IS
begin
RETURN SELF.DREPT_MODIFICARE ;
end GETDREPT_MODIFICARE ;
------------------------------------------------------------------
MEMBER FUNCTION getDREPT_STERGERE RETURN char IS
begin
RETURN SELF.DREPT_STERGERE ;
end GETDREPT_STERGERE ;
------------------------------------------------------------------
end ;*/
--drop table drepturi;
/*create table DREPTURI(
CODANGAJAT numeric (10) ,
CODFURNIZOR numeric(10),
DREPT_INSERARE CHAR(1) default 'N' not null constraint CK_DREPT_INS check (DREPT_INSERARE in ('D','N')),
DREPT_MODIFICARE CHAR(1) default 'N' not null constraint CK_DREPT_MOD check (DREPT_MODIFICARE in ('D','N')),
drept_stergere char(1) default 'N' not null constraint ck_drept_del check (drept_stergere in ('D','N')),
constraint pk_drepturi primary key (codangajat, codfurnizor)
);*/
-----------------------------------------------
CREATE OR REPLACE PACKAGE BODY pachet_drepturi IS
--------------------------------------------------------------------------
FUNCTION f_identif_furnizor (codcomandahrana_ comanda_hrana.codcomandahrana%TYPE)
RETURN furnizor.codfurnizor%TYPE
is
V_CODFURNIZOR varchar2(5);
ref1 ref tip_furnizor;
begin
select REF_FURNIZOR
into REF1
from COMANDA_HRANA
where CODCOMANDAHRANA=CODCOMANDAHRANA_ ;
RETURN v_codfurnizor ;
END ;
--------------------------------------------------------------------------
FUNCTION f_drepturi (codangajat_ numeric,
codfurnizor_ furnizor.codfurnizor%TYPE,
tip_drept CHAR)
RETURN BOOLEAN
IS
v_sir CHAR(1) ;
BEGIN
CASE
WHEN tip_drept = 'I' THEN
SELECT drept_inserare INTO v_sir FROM drepturi
WHERE codangajat = codangajat_ AND codfurnizor=codfurnizor_ ;
WHEN tip_drept = 'U' THEN
SELECT drept_modificare INTO v_sir FROM drepturi
WHERE codangajat = codangajat_ AND codfurnizor=codfurnizor_ ;
WHEN tip_drept = 'D' THEN
SELECT drept_stergere INTO v_sir FROM drepturi
WHERE codangajat = codangajat_ AND codfurnizor=codfurnizor_ ;
END CASE ;
RETURN CASE v_sir WHEN 'D' THEN TRUE ELSE FALSE END ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE ;
END ;
END pachet_drepturi ;
--========================================================================
/
И когда я вызываю функцию в триггере ниже, я получаю эту ошибку:
IF **pachet_drepturi.f_drepturi (USER, :NEW.ref_furnizor, 'I') THEN**
NULL ;
ELSE
RAISE_APPLICATION_ERROR (-20572, 'Nu aveti dreptul de a insera comenzi noi pentru acest furnizor !');
END IF ;
~~~~~~
Error(20,5): PLS-00306: wrong number or types of arguments in call to 'F_DREPTURI'
~~~~~
Упомяну, что мой codAngajat в ANGAJATI таблице VARCHAR2 (5).
Можете ли вы объяснить, что я делаю неправильно?
Заменено codangajat_ с помощью: varchar2. Кроме того, попытался заменить angajati.codangajat% TYPE, по-прежнему такая же ошибка! – user3185322
Каковы типы типов мебели.codfurnizor и ref_furnizor? – San
furnizor.codfurnizor - varchar2, ref_furnizor - varchar2 – user3185322