programing

MySQL - 저장 프로시저에서 예외를 두는 방법?

testmans 2023. 9. 17. 12:11
반응형

MySQL - 저장 프로시저에서 예외를 두는 방법?

MySQL에서 저장 프로시저에서 예외를 생성하는 방법은?예를 들어,

CREATE PROCEDURE SALES()
BEGIN

STATEMENT...
STATEMENT...
STATEMENT...

IF (PRICE >= 500) THEN
/** THROWS AN EXCEPTION....  
    WHAT DO TO STOP THE PROCEDURE. **/
END IF;

STATEMENT...
STATEMENT...
STATEMENT...

END;

MySQL에서는 저장 프로시저에 예외를 둘 방법이 없다고 생각하지만 존재하지 않는 테이블에서 선택하여 오류를 강제로 발생시킬 수 있습니다.예를 들어,

IF (PRICE > 500) THEN
    /*throw the error here*/
    SELECT * FROM price_greater_than_500_in_throw_exception;
END IF;

좀 더 우아한 방법이 없을까요?

감사해요.

MySQL 5.5부터는 SIGNAL과 REASEAL사용하여 오류를 처리할 수 있습니다.그 이전에는 MySQL의 오류를 처리할 방법이 없었습니다.유일한 방법은 잘못된 쿼리를 실행하는 것입니다(예: 기존 테이블이 아닌 테이블에 삽입).

다음은 버전 5.5 이상에서 작동하는 mysql에서 예외를 던지는 방법의 예입니다.

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Custom error';

자세한 내용은 여기 https://dev.mysql.com/doc/refman/5.5/en/signal.html 에서 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/9131379/mysql-how-to-throw-exception-in-stored-procedure

반응형