Variables en memoria pl/sql

Tengo una consulta que seguro para usted será sencilla de resolver. Yo me he creado un procedimiento y ahí le he declarado una variable, según la cual, dependerá que salte un determinado trigger o no. Mi duda es cómo hay que declarar la variable para que desde el disparador yo le ponga un if variable=1 then... Y se ejecuten las sentencias que hay dentro, y en el disparador cómo "recojo" esa variable que está en memoria, es decir, por ejemplo si hago una modificación en una tabla lo hago así :new. Campo y ahí es donde está almacenada temporalmente la información, ¿pero si esta variable que declaré en el procedimiento no hace referencia a ningún campo de la tabla cómo lo hago?
Respuesta
1
No, la verdad que sencillo no es para mi dado que no soy un experto en PL, pero bue...
¿A ver si entiendo estás tratando de pasarle algún parámetro al trigger? Si es así, te digo que no se puede porque no se pueden crear con parámetros. Dentro del trigger puedes hacer lo que se puede hacer en un bloque PL/SQL, así que puedes declarar alguna variable y llamar a otras funciones que te puedan devolver ese valor, pero pasarle parámetros al trigger no.
Si los datos de la variable tienen que ver con datos de la sesión del usuario y demás, se puede consultar sys_context para tomarlos y evaluar.
No no, parámetros sé que no se pueden pasar. Te explico el caso. Estoy haciendo una migración de una base de datos a otra. Y he hecho un trigger para que cuando haya una modificación, inserción... en la base de datos nueva, se actualice automáticamente la antigua. Y si se modifica en la antigua ocurra lo mismo, pero ésta vez a través de un procedimiento. Lo que debo hacer es evitar que se produzca un bucle entre ambos. Para ello tengo que declarar una variable en el procedimiento, que controle que si la actualización se hace a través del procedimiento, no se lance el trigger. Es decir, yo a la variable le doy un valor en el procedimiento, y ese mismo valor debe pasar al trigger para que si ese valor esta a 0 haga las modificaciones y si no pase.
Mmmmmmmmmmmmm la verdad que no se, yo intentaría ver si podes setear el modulo y nombre de la app en el procedimiento (esto es vía sys_context) y en el trigger preguntas si viene de ese módulo, no lo haces.
http://www.psoug.org/reference/sys_context.html
Otra, cosa me parece que tendrías que escribir alguna bandera en una tabla temporal o similar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas