Как структурировать запрос, если существует, чтобы создать сообщение об ошибке - PullRequest
0 голосов
/ 23 октября 2019

Я создал процедуру, которую я использую для вставки новых столбцов в таблицу, и я сделал оператор IF, чтобы сказать, что, если введенная дата раньше текущей или нет, по крайней мере, 30 дней в будущемзатем выдать ошибку, теперь я хочу создать оператор IF, который будет вставлять новый столбец, только если одна из строк существует ... в таблице есть только три возможных курса, поэтому процедура запрашивает код курсаи дату, может ли кто-нибудь подтолкнуть меня в правильном направлении для того, чтобы структурировать мое выражение IF, чтобы выдавать ошибку, когда один из трех кодов не введен?

Я не знаю, какие ключевые слова использовать.

Вот мой IF оператор для проверки даты:

IF (give_date < DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) OR (give_date <= CURDATE()) THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Please Enter A Date Over One Month';
ELSEIF (WEEKDAY(give_date) = 5 )THEN SET loop_date = DATE_ADD(give_date, INTERVAL 2 DAY);
ELSEIF (WEEKDAY(give_date) = 6 )THEN SET loop_date = DATE_ADD(give_date, INTERVAL 1 DAY);
ELSE SET loop_date = give_date;
END IF;

Я пытаюсь сделать что-то подобное ...

    IF (new_code, EXISTS IN (module (course_code)) THEN 
    SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Please Check Entered Course And Try Again';
    END IF;

Также попытался сделать этоно появляется сообщение об ошибке, в котором говорится, что подзапрос возвращает более одной строки ...

IF give_code != ( SELECT course_code FROM module WHERE course_code = ('WSD' OR 'DDM' OR 'NSF'))THEN 
    SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Please Check Entered Course And Try Again'; END IF;

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

У вас работает?

IF ( SELECT count(*) FROM module WHERE course_code in ('WSD','DDM','NSF')) > 0 
THEN 
    SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Please Check Entered Course And Try Again'; 
END IF;
0 голосов
/ 23 октября 2019

Получилось, сделав так:

IF give_code NOT IN ( SELECT course_code FROM module WHERE course_code = ('WSD' OR 'DDM' OR 'NSF'))THEN 
    SIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = 'Please Check Entered Course And Try Again'; END IF;

...