sql >> Databasteknik >  >> RDS >> Oracle

PLS-00382:uttrycket är av fel typ genom att köra funktionen och försök att lägga returtypen i en variabel

Du deklarerar posttyp, samling/tabelltyp och funktion inom samma paket.

När du anropar funktionen måste du använda samma typ, från det paketet.

Men det är det inte. Den har samma struktur - fält och datatyper - men är inte densamma när det gäller Oracle. Oracle måste veta det exakt samma typ används, delvis för att den ska kunna hålla reda på beroenden mellan objekt.

Ditt anonyma block måste referera till pakettyperna, snarare än att deklarera sina egna - liknande men motstridiga - typ(er):

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

Som en bonus innebär det mycket mindre skrivning och innebär att du inte behöver hantera dubbletter.

Det betyder dock också att typdeklarationerna måste finnas i paketspecifikationen - vilket är fallet för allt du vill ska vara offentligt synligt, naturligtvis.




  1. Kör SERVERPROPERTY() mot en länkad server i SQL Server

  2. Hur ändrar man kolumnvärden i MySQL?

  3. Hur man skapar en zip-mapp i plsql (Oracle)

  4. Vad är exakt operatorn att jämföra mellan `bigint` och `date` i postgresql?