Oracle - Recursive Calls can also occur when you are calling a PL/SQL function from a SQL statement and this function :
- executes many SQL statement itself
- or refers to built-in functions such as USER
A possible solution is to include the PL/SQL routine into the query itself :
- by using a sub SELECT
- by using a complex CASE statement
For pre-build function as USER, you can store them once per session in a global package variable and just refer to them instead.