IF l_value = 'FALSE' THEN
RAISE_APPLICATION_ERROR(-20299, 'some error message');
END IF;
이것은 테이블 트리거의 일부입니다. 그것은 나에게 오류 번호와 메시지를 반환해야하지만 경고가 튀어 나오면 메시지 번호 만 반환됩니다. '일부 오류 메시지'가 없습니다. 뭐가 잘못RAISE_APPLICATION_ERROR는 메시지를 반환하지 않습니다.
IF l_value = 'FALSE' THEN
RAISE_APPLICATION_ERROR(-20299, 'some error message');
END IF;
이것은 테이블 트리거의 일부입니다. 그것은 나에게 오류 번호와 메시지를 반환해야하지만 경고가 튀어 나오면 메시지 번호 만 반환됩니다. '일부 오류 메시지'가 없습니다. 뭐가 잘못RAISE_APPLICATION_ERROR는 메시지를 반환하지 않습니다.
아마도 RAISE_APPLICATION_ERROR
오해의 소지가 있습니다. 그것은 당신의 GUI에 뭔가를 팝업하지 않습니다. 자신이 사용하는 클라이언트에 따라 스스로 프로그래밍 할 수 있습니다. RAISE_APPLICATION_ERROR
을 사용하여 사용자가 처리 할 고유 한 SQL 오류를 작성할 수 있습니다.
예
-- a example table
create table mytest (col_a number, col_b char(20));
-- a example trigger
CREATE OR REPLACE TRIGGER mytest_before
BEFORE UPDATE
ON mytest
FOR EACH ROW
DECLARE
BEGIN
if :new.col_a < 0 then
RAISE_APPLICATION_ERROR(-20299, 'negative value not allowed for column A');
end if;
END;
insert into mytest values (1,'hallo');
set serveroutput on
DECLARE
negative_value EXCEPTION; -- declare exception
PRAGMA EXCEPTION_INIT (negative_value, -20299); -- assign error code to exception
BEGIN
update mytest set col_a = -1 where col_b = 'hallo';
EXCEPTION
WHEN negative_value THEN -- handle exception
-- do whatever you need to do to bring the error to the user
DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQLERRM(-20299)));
END;
/
위의 SQL에서 당신에게 결과를 가져올 것이다 * 플러스 또는 그런 종류의 SQL 개발자.
table MYTEST created.
TRIGGER mytest_before compiled
1 rows inserted.
anonymous block completed
ORA-20299: negative value not allowed for column A
ORA-06512: at "DEMO.MYTEST_BEFORE", line 4
ORA-04088: error during execution of trigger 'DEMO.MYTEST_BEFORE
대신 DBMS_OUTPUT.PUT_LINE의 당신은 당신이 그에게 보여주고 원하는 사용자를 표시 할 필요가 무엇이든 할 수 있습니다.
양식의 경고가 양식의 일부 트리거 코드에 의해 발생했습니다. ON-ERROR
트리거를 확인하십시오 - 어떤 코드가 있습니까?
경보에 DBMS_ERROR_TEXT
을 표시하려면 기능을 보강해야 할 수도 있습니다.
어떤 데이터베이스 유형을 사용하고 있습니까? MS SQL? 신탁? MySQL은? –
경고는 클라이언트에 의해 렌더링됩니다. 문제는 클라이언트와 관련이 있습니다. – APC
나는 오라클을 사용하고있다 –