Как проверить оператор if в PostgreSQL? - PullRequest
4 голосов
/ 05 февраля 2012

Вопрос: я хочу проверить оператор if в PostgreSQL:

IF (SELECT COUNT(*) FROM pg_language WHERE lanname = 'plpgsql') > 0 THEN
    PRINT 'Good'
ELSE
    PRINT 'Bad'
END IF;

Теперь выдается ошибка при IF.

Насколько я прочитал, это потому, что мне нужно использовать plpgsql, чтобы иметь возможность использовать if, print и переменные.

Пока что мне, вероятно, также придется использовать SELECT вместо print.

Как я могу переключить язык перед выполнением этого оператора в plpgsql?

Я хочу сначала проверить это, ДО того, как поместить его в хранимую процедуру. Для тестирования кода с переменными и т. Д.


Редактировать:

Решено:

DO LANGUAGE plpgsql $$
    BEGIN
        IF (SELECT COUNT(*) FROM pg_language WHERE lanname = 'plpgsql') > 0 THEN 
            RAISE NOTICE 'GOOD';
        ELSE
            RAISE NOTICE 'BAD';
        END IF;
    END;
$$;

1 Ответ

9 голосов
/ 05 февраля 2012

Если вы просто хотите протестировать фрагменты кода, не проходя все хлопоты по созданию и удалению функции, тогда вы можете использовать DO:

=> do language plpgsql $$
    begin
        -- Yes, I have a table called pancakes in my playpen database.
        if (select count(*) from pancakes) > 0 then
            raise notice 'Got some';
        else
            raise notice 'Got none';
        end if;
    end;
$$;

Для использования DO.

вам потребуется 9.0+.
...