1
BEGIN
    CASE x
        WHEN 0 THEN (
                    IF thisIsAVariable = 'viewAll' THEN
                       SELECT id, fname FROM Persons WHERE 1
                    ELSE
                       SELECT id, fname FROM Persons WHERE id = '1111'
                    END IF
                 );
    END CASE;
END

casewhenステートメント内のifelseステートメントの正しい構文は何ですか?

4

3 に答える 3

1

使用するだけIF-ELSEで、

DELIMITER $$
CREATE PROCEDURE procName
BEGIN
    IF x = 0 THEN
        IF thisIsAVariable = 'viewAll' THEN
            SELECT id, fname FROM Persons WHERE 1;
        ELSE
            SELECT id, fname FROM Persons WHERE id = '1111';
        END IF;
    ELSE
        -- other codes if you have
    END IF;
END $$
DELIMITER ;

を使用するCASE場合、select ステートメントは 1 つの値のみを返す必要があると思います。

于 2013-02-15T06:05:59.100 に答える
1

if 内で if を使用して、以下のようにコードを簡単にすることができます。

BEGIN
    IF x = 0 THEN
        IF thisIsAVariable = 'viewAll' THEN
            SELECT id, fname FROM Persons WHERE 1;
        ELSE
            SELECT id, fname FROM Persons WHERE id = '1111';
        END IF;
    END IF;
END 
于 2013-02-15T06:17:05.197 に答える
0

これを試してみてください

BEGIN
    CASE x
        WHEN 0 THEN (
                    SELECT id, fname FROM Persons WHERE id = IF(thisIsAVariable = 'viewAll',1,'1111')
                 );
    END CASE;
END
于 2013-02-15T07:03:04.763 に答える