sql >> Database teknologi >  >> RDS >> Oracle

PLS-00382:udtryk er af forkert type ved at udføre funktion og prøv at sætte returtypen i en variabel

Du erklærer posttypen, samlingen/tabeltypen og funktionen i den samme pakke.

Når du kalder funktionen skal du bruge samme type fra den pakke.

Men det er det ikke. Det har samme struktur - felter og datatyper - men er ikke det samme, hvad Oracle angår. Oracle skal vide det præcis den samme type bliver brugt, dels for at den kan holde styr på afhængigheder mellem objekter.

Din anonyme blokering skal referere til pakketyperne i stedet for at erklære sin egen - lignende, men modstridende - type(r):

DECLARE
    managers hr_package.managers_table_type;
BEGIN
    managers := hr_package.managers_multiple_departments;
END;

Som en bonus involverer det meget mindre indtastning og betyder, at du ikke behøver at administrere duplikerede typer.

Det betyder dog også, at typeerklæringerne skal være i pakkespecifikationen - hvilket selvfølgelig er tilfældet for alt, hvad du ønsker skal være offentligt synligt.




  1. TZ_OFFSET() Funktion i Oracle

  2. Hvordan skriver man et kolonnenavn med prik (.) i SELECT-sætningen?

  3. Hvad er forskellen mellem præcision og skala?

  4. tjek forbindelsen fra C# app til oracle 10g database