sql >> Databáze >  >> RDS >> Oracle

PLS-00382:výraz je nesprávného typu provedením funkce a pokuste se vložit návratový typ do proměnné

Deklarujete typ záznamu, typ kolekce/tabulky a funkci ve stejném balíčku.

Když voláte funkci, musíte použít stejný typ z tohoto balíčku.

Ale není. Má stejnou strukturu – pole a datové typy – ale není stejná, pokud jde o Oracle. Oracle to potřebuje vědět přesně používá se stejný typ, částečně proto, aby mohl sledovat závislosti mezi objekty.

Váš anonymní blok musí odkazovat na typy balíčků, spíše než deklarovat vlastní – podobné, ale konfliktní – typy:

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

Jako bonus to zahrnuje mnohem méně psaní a znamená, že nemusíte spravovat duplicitní typy.

Znamená to však také, že deklarace typu musí být ve specifikaci balíčku – což samozřejmě platí pro vše, co chcete být veřejně viditelné.




  1. Volání Enterprise Library ODP.NET vrací ORA-06502:PL/SQL:numerická nebo hodnotová chyba

  2. Jak se počítá shlukovací faktor Oracle Index

  3. Jak zkrátit tabulku v MySQL

  4. Nejlepší způsob, jak ověřit uživatelský vstup JDBC?