Asignacion a variable en un Trigger Oracle
Hola,
En primer lugar, buenas tardes a todos.
Tengo un problemilla, me es necesario asignar el resultado de una consulta a una variable de dentro de un trigger pero al picar el codigo
me da error. El problema es que no puedo utilizar el into del select ( sino ya ves tu q facil!! ) y el codigo q tengo es algo como esto:
CREATE OR REPLACE TRIGGER cavash_del
AFTER DELETE ON cavash
REFERENCING OLD AS prv
FOR EACH ROW
DECLARE
x NUMBER;
BEGIN
x:= SELECT COUNT(*) <---- Esta asignacion se puede realizar de otra manera¿?
FROM cavalesh
WHERE rowenl = :prv.apteid;
IF (x > 0) THEN
sdm_raise_msg(0, 'cavalesh_del: No se permite eliminar este aval.');
END IF;
END cavalesh_del;
.
run
En primer lugar, buenas tardes a todos.
Tengo un problemilla, me es necesario asignar el resultado de una consulta a una variable de dentro de un trigger pero al picar el codigo
me da error. El problema es que no puedo utilizar el into del select ( sino ya ves tu q facil!! ) y el codigo q tengo es algo como esto:
CREATE OR REPLACE TRIGGER cavash_del
AFTER DELETE ON cavash
REFERENCING OLD AS prv
FOR EACH ROW
DECLARE
x NUMBER;
BEGIN
x:= SELECT COUNT(*) <---- Esta asignacion se puede realizar de otra manera¿?
FROM cavalesh
WHERE rowenl = :prv.apteid;
IF (x > 0) THEN
sdm_raise_msg(0, 'cavalesh_del: No se permite eliminar este aval.');
END IF;
END cavalesh_del;
.
run
Si por alguna extrana razon no quieres o puedes utilizar un select ... into variable from ...
Ya que tienes toda la razon es lo mas logico y sencillo.
Puedes crear un cursor
CREATE OR REPLACE TRIGGER cavash_del
AFTER DELETE ON cavash
REFERENCING OLD AS prv
FOR EACH ROW
DECLARE
x NUMBER;
cursor tmp is
select count(*) contador
from ...
where ...
BEGIN
For CR in tmp Loop
IF (CR.contador > 0) THEN
sdm_raise_msg(0, 'cavalesh_del: No se permite eliminar este aval.');
END IF;
end loop;
END cavalesh_del;
Ya que tienes toda la razon es lo mas logico y sencillo.
Puedes crear un cursor
CREATE OR REPLACE TRIGGER cavash_del
AFTER DELETE ON cavash
REFERENCING OLD AS prv
FOR EACH ROW
DECLARE
x NUMBER;
cursor tmp is
select count(*) contador
from ...
where ...
BEGIN
For CR in tmp Loop
IF (CR.contador > 0) THEN
sdm_raise_msg(0, 'cavalesh_del: No se permite eliminar este aval.');
END IF;
end loop;
END cavalesh_del;
