Задать вопрос
  • Есть ли способ логировать работу процедуры?

    @nea14
    Чтобы узнать значение скалярной переменной:
    raise notice 'Моя переменная var1 = %, а var2 = %', var1, var2;

    Чтобы узнать, что было в какой-нибудь промежуточной таблице, можно использовать refcursor'ы:
    declare
        ...
        cur1 refcursor := 'unique_name1';  -- Создали переменную типа refcursor
    ...
    open cur1 for
        select ...;  -- Привязываем курсор к запросу, который хотим проследить

    тогда снаружи функцию/процедуру можно будет вызывать так:
    begin transaction;
    select public.my_func1();  -- для функции
    call public.my_proc1;  -- или для процедуры
    fetch all from "unique_name1";   -- выведет таблицу по этому курсору. Имя в двойных, а не одинарных кавычках.
    commit transaction;  -- достать данные можно пока транзакция не закончилась, поэтому здесь явно оборачиваем всё в транзакцию
    Ответ написан
    Комментировать