Pgsql, как вернуть значение из скрипта - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно вернуть значение с именем tsmax при выполнении сценария pgsql.

Сценарий выполняется и источником данных ETL (Pentaho). Все, что я могу сделать, это выполнить скрипт. Я не могу создавать функции в исходной базе данных.

Ниже мой сценарий. Мне нужно что-то вроде select tsmax; в конце, но блок скрипта не может ни выбирать, ни возвращать значения. (Я только что заменил все вычисления на метку " выполнить какой-то процесс для вычисления tsmax ", чтобы упростить пример).

do $$
declare tsmax timestamp;
begin
    -- do some process to calculate tsmax
    -- do some process to calculate tsmax
    tsmax = now();

    -- i want to return value tsmax
    select tsmax; -- this is an ERROR!
end $$ language plpgsql;

Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

Вам следует сохранить значение в переменной сеанса, и после выполнения анонимного блока вы можете прочитать это значение:

[pavel@nemesis ~]$ echo "do \$\$ begin perform set_config('myvars.myvar', current_date::text, false); end \$\$; select current_setting('myvars.myvar'); " | psql -At postgres
DO
2018-11-13

DO команда не поддерживает какую-либо форму возвращаемого значения.

...