반응형
will IF SIGNAL SQLSTATE in mariadb exit stored procedure?
I don't quite understand how MariaDB signals work.
문자열을 입력하는 저장 프로시저가 있습니다.저는 그 문자열을 유효한 문자로 테스트하고 있습니다.유효하지 않은 문자가 발견되면 오류가 유효하지 않다는 신호를 보내고 싶습니다.저장 프로시저가 다음과 같은 경우 즉시 종료됩니까?SIGNAL SQLSTATE '......' SET MESAGE_TEXT='......'
키웠나요?아니면 신호를 보내기 전에 절차를 완료하는 건가요?
그냥 사용할때IF...THEN
그것은 효과가 없는 것처럼 보이는 진술.
CREATE PROCEDURE `testP`()
BEGIN
IF testStringSecurity('he;llo world') != 0 THEN
SELECT 'INVALID CHARACTERS';
END IF;
SELECT 'GOOD TO GO';
END;
항상 돌아옵니다.GOOD TO GO
. 포장을 해주셔야 할 것 같습니다.IF ... THEN ... ELSE
유효한 사례를 얻기 위해 그렇게 합니다.신호를 설정하는 것은 다르지만요.
CREATE PROCEDURE `testP`()
BEGIN
IF testStringSecurity('he;llo') != 0 THEN
SELECT 'INVALID CHARACTERS';
ELSE
SELECT 'GOOD TO GO';
END IF;
END
A를 사용.SIGNAL
실행을 즉시 중단하는 것 같습니다.
CREATE PROCEDURE `testP`()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE,
@errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
SELECT @full_error;
END;
DECLARE EXIT HANDLER FOR NOT FOUND
BEGIN
SELECT CONCAT('ERROR: ',@str,' RETRUNED NOT FOUND EXCEPTION.');
END;
IF testStringSecurity('he;llo') != 0 THEN
SIGNAL SQLSTATE '42000'
SET MESSAGE_TEXT = 'ERROR: Invalid string';
END IF;
SELECT 'GOOD TO GO';
END
돌아온다'ERROR 1644 (42000): ERROR: Invalid string'
ReferenceURL : https://stackoverflow.com/questions/45677080/will-if-signal-sqlstate-in-mariadb-exit-stored-procedure
반응형
'IT' 카테고리의 다른 글
Memcpy(&a + 1, &b + 1, 0)가 C11에 정의되어 있습니까? (0) | 2023.10.30 |
---|---|
C 언어의 새 행 문자는 무엇입니까?\r 또는 \n? (0) | 2023.10.30 |
약한 연결의 실용적인 응용은 무엇입니까? (0) | 2023.10.30 |
How do you Unit Test Python DataFrames (0) | 2023.10.30 |
부트스트랩 4, 버튼을 중앙 정렬하려면 어떻게 해야 합니까? (0) | 2023.10.30 |