Как переписать PRAGMA EXCEPTION_INIT в Мариадб - PullRequest
0 голосов
/ 11 февраля 2020

Я хотел бы переписать обработку исключений PRAGMA EXCEPTION_INIT в MariaDB. Есть ли альтернатива, используемая в Mariadb для обработки исключения?

Ниже представлена ​​хранимая процедура, доступная в Oracle, которую необходимо перенести в Mariadb

DELIMITER //
CREATE OR REPLACE PROCEDURE "TO_ADD"(ST_ID IN TEXT, NAME IN TEXT, NAME_ID IN TEXT, NAME_DESC IN TEXT, USER IN TEXT, S_ID OUT TEXT)
IS
    ADT_RET VARCHAR (100);
    NAME_ID_COUNT DOUBLE;
    **DUP_NAME_ID EXCEPTION;
    PRAGMA EXCEPTION_INIT (DUP_NAME_ID, -20101);**

BEGIN

    NAME_ID_COUNT := 0;

    SELECT COUNT(*) INTO NAME_ID_COUNT
    FROM NAMES AS S
    INNER JOIN NAME_TYPES AS ST ON ST.NAME_TYPE_ID = S.NAME_TYPE_ID
    WHERE ST.NAME_TYPE_ID = ST_ID AND UPPER(S.NAME_ID) = UPPER(NAME_ID);

    IF (NAME_ID_COUNT > 0) THEN
        CALL aws_oracle_ext.RAISE_APPLICATION_ERROR(- 20101, 'Name id is already present for this organization', FALSE);
    END IF;

    INSERT INTO Names s
     (s.name_id,
     s.name_type_id,
     s.name,
     s.name_id,
     s.description) VALUES
     (S_ID,
     UNHEX(ST_ID),
     NAME,
     NAME_ID,
     NAME_DESC);


    COMMIT;
**EXCEPTION
     WHEN DUP_NAME_ID THEN RAISE DUP_NAME_ID;**
END;//
DELIMITER ;

Если мы увидим, здесь Прагма exception_init обрабатывается в части исключения. Так как же переписать то же самое для поддержки Mariadb?

...