мой скрипт не запускается, хотя я пробовал разные случаи - PullRequest
0 голосов
/ 26 декабря 2018

Ниже вы можете увидеть мой скрипт, при попытке запустить CREATE PROCEDURE, он всегда выдает синтаксическую ошибку, пожалуйста, дайте мне знать, что не так?

Я пытаюсь удалить ";"перед END IF при создании процедуры, а также я пытался изменить положение END IF

CREATE TABLE IF NOT EXISTS parts (
    part_no VARCHAR(18) PRIMARY KEY,
    description VARCHAR(40),
    cost DECIMAL(10 , 2 ) NOT NULL,
    price DECIMAL(10,2) NOT NULL
);

CREATE PROCEDURE `check_parts`(IN cost DECIMAL(10,2), IN price DECIMAL(10,2))
BEGIN
    IF cost < 0 THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'check constraint on parts.cost failed';
    END IF;

    IF price < 0 THEN
 SIGNAL SQLSTATE '45001'
 SET MESSAGE_TEXT = 'check constraint on parts.price failed';
    END IF;

    IF price < cost THEN
 SIGNAL SQLSTATE '45002'
            SET MESSAGE_TEXT = 'check constraint on parts.price & parts.cost failed';
    END IF;

END

1 Ответ

0 голосов
/ 26 декабря 2018

Вам просто нужно изменить разделители, потому что в написанной процедуре он остановится на первом ";"

DELIMITER //
CREATE PROCEDURE `check_parts`(IN cost DECIMAL(10,2), IN price DECIMAL(10,2))
BEGIN
    IF cost < 0 THEN
        SIGNAL SQLSTATE '45000'
          SET MESSAGE_TEXT = 'check constraint on parts.cost failed';
    END IF;

    IF price < 0 THEN
      SIGNAL SQLSTATE '45001'
         SET MESSAGE_TEXT = 'check constraint on parts.price failed';
    END IF;

    IF price < cost THEN
       SIGNAL SQLSTATE '45002'
         SET MESSAGE_TEXT = 'check constraint on parts.price & parts.cost failed';
    END IF;

END //
DELIMITER ;

Должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...