A
Andrian
мне нужна какаят-о функция (в моем случае МSG но она использует
RAISE_APPLICATION_ERROR(AError, AText)
) которая при реагировании тригера на ввод неправильных данных вывела в моем приложение (приложение написано на C++ Builder) которая использует Oracle 10 g, сообщение о недостоверности водимых данных и рарешала бы дальше работать и не блокировала эту запись как делает RAISE_APPLICATION_ERROR.
Тригер имеет вид:
CREATE OR REPLACE TRIGGER UN4.TRiG_Ver_Cant instead OF
INSERT OR UPDATE ON UN4.VMDB_CMN202D FOR EACH ROW
DECLARE CA NUMBER;
eroare EXCEPTION;
BEGIN
ca:=Un$sold.CALC_SOLD(sysdate,
2161,
' ',
:new.ctsc,
:new.ctdep,
' ',
' ',
' ',
' ',
' ',
158159);
IF INSERTING THEN
if :new.ctsc not in(17688) then
if
new.cant>ca) then
begin
raise eroare;
end;
end if;
end if;
ELSIF UPDATING THEN
if :new.ctsc not in(17688) then
if
new.cant>ca) then
begin
raise eroare;
end;
end if;
end if;
END IF;
EXCEPTION
WHEN eroare THEN msg('Cantitatea produsului '||:new.ctsc||' depaseste resturile la depozitul '||:new.ctdep||' de: '||ca);
end;
/
???
RAISE_APPLICATION_ERROR(AError, AText)
) которая при реагировании тригера на ввод неправильных данных вывела в моем приложение (приложение написано на C++ Builder) которая использует Oracle 10 g, сообщение о недостоверности водимых данных и рарешала бы дальше работать и не блокировала эту запись как делает RAISE_APPLICATION_ERROR.
Тригер имеет вид:
CREATE OR REPLACE TRIGGER UN4.TRiG_Ver_Cant instead OF
INSERT OR UPDATE ON UN4.VMDB_CMN202D FOR EACH ROW
DECLARE CA NUMBER;
eroare EXCEPTION;
BEGIN
ca:=Un$sold.CALC_SOLD(sysdate,
2161,
' ',
:new.ctsc,
:new.ctdep,
' ',
' ',
' ',
' ',
' ',
158159);
IF INSERTING THEN
if :new.ctsc not in(17688) then
if

begin
raise eroare;
end;
end if;
end if;
ELSIF UPDATING THEN
if :new.ctsc not in(17688) then
if

begin
raise eroare;
end;
end if;
end if;
END IF;
EXCEPTION
WHEN eroare THEN msg('Cantitatea produsului '||:new.ctsc||' depaseste resturile la depozitul '||:new.ctdep||' de: '||ca);
end;
/
???