(rok stará otázka, ale protože jsem na ni narazil, odpovím na ni za kohokoli jiného...)
ORA-28113 pouze znamená, že když vaše funkce zásad vrátila klauzuli where, výsledný SQL měl nějakou chybu. Podrobnosti můžete získat pohledem na trasovací soubor. Zkuste také:
select Select_Nhanvien('myschema','mytable') from dual;
A pak připojte výsledky ke klauzuli WHERE takto:
SELECT * FROM MYTABLE WHERE <results from above>;
A pak byste měli vidět hlavní příčinu. Hádám, že ve výše uvedeném případě „jiný uživatel“ neměl ani proměnné sys_context potřebné k vytvoření klauzule where, ani přístup k spouštěči přihlášení.
Jako vedlejší poznámku, dalším problémem, na který zde můžete narazit, je cyklický odkaz, když vaše funkce zásad odkazuje na svou vlastní tabulku – v ideálním případě bych očekával, že se funkce zásad sama obejde v rámci funkce zásad, takže NEEXISTUJE atd., ale to neexistuje. Zdá se, že to tak nefunguje.