Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Условие в функции / 3 сообщений из 3, страница 1 из 1
16.06.2020, 20:21
    #39969938
extra_dj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие в функции
Приветствую!
Посоветуйте решение - необходимо выйти из функции при определенных условиях и отдать результат. При проверке условия таким способом
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
CREATE OR REPLACE function test_func(id int)
 RETURNS TABLE(results_q int4,flag character varying)
 LANGUAGE plpgsql
AS $function$
declare
    act_res int:= null;

begin
 with tab as (
     select 4/id  as res 
     where id = 2
    )

    select res into act_res from tab;

    if (act_res is not null)
    then
    return query 
    select res,
    case when res = 2 then 'Y'::varchar  end as flag
    from tab
    ;
    else 
  return query  with tab2 as (
     select 4+id  as res 
     )  
     select res,
     'N'::varchar as flag
    from tab2;

end if;
end;
$function$
;
select * from test_func(2)
;
;



получаю ошибку "relation "tab" does not exist", что и логично. посоветуйте, как возможно сделать проверку таким образом, не создавая временных таблиц?
...
Рейтинг: 0 / 0
16.06.2020, 21:13
    #39969947
Swa111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие в функции
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
return query
with tab as (
  select 4/id  as res 
  where id = 2
 ),
 res1 as (
  select 
    res,
    case when res = 2 then 'Y'::varchar  end as flag
  from tab
 ),
 tab2 as (
  select 4+id  as res
  where not exists(select from res1 where res is not null) 
 )
select res, flag from res1 
union all
select res,'N'::varchar as flag from tab2
...
Рейтинг: 0 / 0
16.06.2020, 22:21
    #39969968
extra_dj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условие в функции
Swa111,

спасибо, принцип понял
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Условие в функции / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]