Оператор CASE, назначьте несколько значений в разделе THEN - PullRequest
1 голос
/ 16 декабря 2011

Об этом спрашивали до , но я не уверен, что на него четко ответили.Как назначить несколько значений в THEN части оператора CASE.Согласно руководству по MySQL " Каждый список_ утверждений состоит из одного или нескольких операторов; ", поэтому мне интересно, как это делается.

У меня есть THEN в моем выражении CASE, и я хотелназначить значение двум переменным.Так что-то вроде THEN @ var1: = 'что-то', @ var2: = 'что-то еще' ESLE ', что-то более' END.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Немного потянув по ссылке, которую вы разместили в документации:

CREATE PROCEDURE procase()
BEGIN
    DECLARE var1 INT;
    DECLARE var2 INT;

    SET var1 = 1;
    SET var2 = 20;

    CASE var1
        WHEN 1000 THEN SELECT var1;
        WHEN 3000 THEN SELECT var1;
        ELSE
        BEGIN
        -- multiple statements; statement list right below
        -- performing multiple variable value setting
            SET var1 = var1 + 200;
            SET var2 = var2 + 200;
            SELECT var1, var2;
        END;
    END CASE;
END

Инкапсулируйте несколько операторов в BEGIN...END. Посмотрите, работает ли это

0 голосов
/ 16 декабря 2011

Я не думаю, что вы сможете назначать переменные внутри самого кейса, если только MySql не отличается от TSQL, но вот как вы можете выполнить то, что вы пытаетесь сделать:

SELECT @va1 = CASE WHEN Some_condition THEN 'something' ELSE 'something else' END,
       @va1 = CASE WHEN Some_condition THEN 'something' ELSE 'something else' END

надеюсь, что поможет

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