Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Составной тип данных в аргументе функции / 6 сообщений из 6, страница 1 из 1
10.03.2018, 12:19
    #39612752
Elfix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной тип данных в аргументе функции
Всем привет!

есть простая функция, получает список контрагентов.
Мне нужно, чтобы если параметры указаны, тогда из базы выбирались только несколько записей, ограниченные полями LIMIT и OFFSET. Если параметры не указаны, то соответственно нужно чтобы показывались все записи начиная с 0 позиции.

Т. е. по сути можно ли в Postgresql в параметре lim установить по умолчанию ALL или число?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE OR REPLACE FUNCTION reference_books.get_list_contragents(
    IN lim integer DEFAULT 0,
    IN offst integer DEFAULT 0)
  RETURNS TABLE(id integer) AS
$BODY$
BEGIN


 
  RETURN QUERY
  SELECT

  reference_books.contragents.id

  FROM reference_books.contragents
  WHERE reference_books.contragents.active = True
  ORDER BY reference_books.contragents.id ASC LIMIT lim OFFSET offst;

END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;
...
Рейтинг: 0 / 0
10.03.2018, 13:35
    #39612769
Ы2
Ы2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной тип данных в аргументе функции
Elfix,

где у вас составной тип? Про limit all читайте в документации.
В конце концов, можете сделать так:
Код: sql
1.
2.
3.
if <условие> then return query query1;
else return query query2;
end if;
...
Рейтинг: 0 / 0
10.03.2018, 14:19
    #39612778
Elfix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной тип данных в аргументе функции
Ы2Elfix,

где у вас составной тип? Про limit all читайте в документации.
В конце концов, можете сделать так:
Код: sql
1.
2.
3.
if <условие> then return query query1;
else return query query2;
end if;

Нет, так нехорошо. У меня в функции есть еще несколько булевых параметров, получается четырехэтажная конструкция из IF. Про LIMIT ALL вопросов нет, есть вопрос как в параметр передать либо ALL либо число, чтобы в запросе можно было это использовать.
...
Рейтинг: 0 / 0
10.03.2018, 14:42
    #39612782
Elfix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной тип данных в аргументе функции
Хотя... придумал как сделать удобнее: сделаю две функции с разным набором параметров.
Спасибо всем!
...
Рейтинг: 0 / 0
12.03.2018, 14:27
    #39613478
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной тип данных в аргументе функции
ElfixЫ2Elfix,

где у вас составной тип? Про limit all читайте в документации.
В конце концов, можете сделать так:
Код: sql
1.
2.
3.
if <условие> then return query query1;
else return query query2;
end if;

Нет, так нехорошо. У меня в функции есть еще несколько булевых параметров, получается четырехэтажная конструкция из IF. Про LIMIT ALL вопросов нет, есть вопрос как в параметр передать либо ALL либо число, чтобы в запросе можно было это использовать.

нулл передайте и проверяйте в функции
...
Рейтинг: 0 / 0
13.03.2018, 16:55
    #39614243
Silender
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной тип данных в аргументе функции
Код: plsql
1.
2.
3.
CREATE OR REPLACE FUNCTION reference_books.get_list_contragents(
    IN lim integer DEFAULT NULL,
    IN offst integer DEFAULT NULL)


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


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