plpgsql CASE statement

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема plpgsql CASE statement
Дата
Msg-id 162867790804041306q3209ca76y8799d292cb952a6f@mail.gmail.com
обсуждение исходный текст
Список pgsql-patches
Hello

I finished this patch.

Proposal: http://archives.postgresql.org/pgsql-hackers/2008-01/msg00696.php

It's compatible with PL/SQL (Oracle) and SQL/PSM (ANSI).

CASE statements is parsed and transformed to CASE expression and
statements paths. Result of CASE expression is used as index to array
of statements paths.

Sample:

CREATE OR REPLACE FUNCTION foo(int)
RETURNS void AS $$
BEGIN
 CASE $1
     WHEN 1,2,3 THEN
        RAISE NOTICE '1,2';
        RAISE NOTICE '3';
     WHEN 4 THEN
        RAISE NOTICE '4';
     ELSE
        RAISE NOTICE 'other than 1,2,3,4';
 END CASE;
 RETURN;
END;
$$ LANGUAGE plpgsql;

This statement is transformated to:
three statement paths:
[0]
        RAISE NOTICE 'other than 1,2,3,4';
[1]
        RAISE NOTICE '1,2';
        RAISE NOTICE '3';
[2]
        RAISE NOTICE '4';

and case expression
CASE $1
 WHEN 1 THEN 1
 WHEN 2 THEN 1
 WHEN 3 THEN 1
 WHEN 4 THEN 2
END;

When result is NULL then it uses 0 path.

Regards
Pavel Stehule

Вложения

В списке pgsql-patches по дате отправления:

Предыдущее
От: Fujii Masao
Дата:
Сообщение: Replace offnum++ by OffsetNumberNext
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Expose checkpoint start/finish times into SQL.