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

Získání chyby při volání jakékoli funkce v dotazu SQL v balíčku bez deklarace funkce ve specifikaci balíčku

S dopřednou deklarací nemá vůbec nic společného.

To se zabývá tím, že k volání funkce používáte SQL dotaz . Zdá se, že při použití příkazu k vyvolání funkce již nejste v rozsahu balíčku PL/SQL, takže můžete volat pouze veřejně dostupné funkce.

Pokud jde o důvod , mohu jen hádat, takže to neberte jako samozřejmost, ale PL/SQL a SQL mají různé motory . Takže když děláte SQL dotaz, dokonce i uvnitř vašeho pl/sql balíčku, přejdete na úroveň SQL, kde znovu zkontroluje oprávnění podle SQL motoru. Nemá tedy ponětí, že se spouští z balíku PL/SQL a měli byste mít možnost volat privátní funkci.

Myslím, že rozdíl motorů lze snadno zkontrolovat, zkuste použít varchar2 32000, bude to fungovat v rámci funkce pl/sql. Nyní, když zavoláte svou funkci pl/sql, která vrátí varchar2(32000) , selže. Toto je problém, na který jsem narazil, ale nemám žádnou databázi, kterou bych vám mohl poskytnout.



  1. Jak používat výpis MySQL ze vzdáleného počítače

  2. souběžné čtení a zápis do tabulky MySQL

  3. Bezplatný desktopový klient pro Oracle?

  4. Problém s navázáním implodovaného pole do příkazu připraveného v mysql