Múltiples funciones llamando a una misma función. Necesito crear una bandera.
Múltiples funciones llamando a una misma función. Necesito crear una bandera.
Supongamos que tengo 4 funciones (f1, f2, f3 y f4) en un paquete PLSQL.
F1 está siendo llamada por F2, F3 y F4. Lo único que quiero es una bandera para rastrear qué función llamó a F1.
Por ejemplo, si f2 llamó a f1, entonces flag=2; flag=3 cuando f3 llamó a f1, y así sucesivamente. Y esto debería ser accesible de tal manera que pueda utilizar esta bandera dentro de la función F1.
davy.ai
Solución
Para rastrear qué llamadas de función F1, podemos crear una variable privada en el paquete PL/SQL y establecer su valor antes de llamar a F1. La variable puede ser accedida por F1 para determinar qué función la llama.
Aquí tienes un ejemplo de implementación:
En esta implementación, la variable privada
flag
se establece inicialmente en 0. Cuando una función llama a F1, establece el valor deflag
a su propio identificador (2, 3 o 4 en este ejemplo). F1 luego puede acceder a la variableflag
para determinar qué función la llamó.Para probar esta implementación, podemos ejecutar las siguientes declaraciones SQL:
Estas declaraciones producirán los siguientes resultados:
Como era de esperar, F1 es capaz de determinar qué función la llamó en función del valor de la variable
flag
.