MySQL иначе, если выписка не выполняется - PullRequest
0 голосов
/ 29 января 2020

Независимо от того, что MySQL ПРОЦЕДУРА, которую я создаю, 2-й оператор ELSE IF возвращает ноль результатов. Каждый оператор Select при запуске отдельно возвращает результат. Я не вижу проблемы с моим синтаксисом. Я прошу прощения, если это простое исправление. Пожалуйста, помогите.

  DELIMITER $$

CREATE PROCEDURE TEST(type VARCHAR(7), cat TINYINT)
BEGIN
    IF type = 'coffee' THEN
        Select * FROM specific_coffee WHERE id=cat;
    ELSEIF type = 'goodies' THEN
        Select * FROM non_coffee_products WHERE id=cat;
    END IF;
END $$

Ответы [ 2 ]

0 голосов
/ 30 января 2020

РАЗДЕЛИТЕЛЬ $$

ТЕСТИРОВАНИЕ ПРОЦЕДУРЫ СОЗДАНИЯ (type VARCHAR (7), cat TINYINT) НАЧАЛО ЕСЛИ type = 'coffee' THEN SELECT '1'; ELSEIF type = «вкусности», ТО ВЫБРАТЬ «2»; END IF; END $$ Вы можете использовать TYPE как type;

0 голосов
/ 29 января 2020

Текст процедуры правильный.

CREATE TABLE specific_coffee
SELECT 1 id, 11 val
UNION ALL
SELECT 2,22
CREATE TABLE non_coffee_products 
SELECT 1 id, 111 val
UNION ALL
SELECT 2,222
CREATE PROCEDURE TEST(type VARCHAR(7), cat TINYINT)
BEGIN
    IF type = 'coffee' THEN
        Select * FROM specific_coffee WHERE id=cat;
    ELSEIF type = 'goodies' THEN
        Select * FROM non_coffee_products WHERE id=cat;
    END IF;
END
CALL TEST ('coffee', 1)
id | val
-: | --:
 1 |  11
CALL TEST ('goodies', 2)
id | val
-: | --:
 2 | 222

db <> fiddle здесь

Проверьте ваши данные и параметры.

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