Оператор CASE, присвойте несколько значений в разделе THEN

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

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

Это возможно?


person Andre    schedule 15.12.2011    source источник


Ответы (2)


Я не думаю, что вы сможете назначать переменные внутри самого случая, если только 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

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

person Bassam Mehanni    schedule 15.12.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.. Посмотрите, работает ли это

person Nonym    schedule 16.12.2011