Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / объявление и передача массива в функцию plpgsql / 2 сообщений из 2, страница 1 из 1
30.09.2005, 16:13
    #33298978
Mariuz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
объявление и передача массива в функцию plpgsql
Подскажите пожалуйста как объявить массив и передать его в функцию.
Функция такая:
create or replase public.fun (date, int4[]) return setof record as
declare
_start_date alias for $1;
_spisok alias for $2;
_record record;
begin
for _record in select .......where allpeople.start_work<=_start_date and allpeople.enterprise in _spisok
loop
return NEXT _record;
end loop;
return ;
end;'

функцию вызываю
select * from fun ('2005-09-10', (15,55,103)) не работает
запрос отдельно
select .......where allpeople.start_work<='2005-09-10' and allpeople.enterprise in (15,55,103));
выполняеться, усли у функции параметры убрать и запрос жестко написать select .......where allpeople.start_work<='2005-09-10' and allpeople.enterprise in (15,55,103));
тоже работает. Подскажите пожалуйста где ошибка.
...
Рейтинг: 0 / 0
30.09.2005, 16:26
    #33299024
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
объявление и передача массива в функцию plpgsql
Mariuz wrote:

> Подскажите пожалуйста как объявить массив и передать его в функцию.
> Функция такая:
> create or replase public.fun (date, int4[]) return setof record as
> declare
> _start_date alias for $1;
> _spisok alias for $2;
> _record record;
> begin
> for _record in select .......where allpeople.start_work<=_start_date and
> allpeople.enterprise in _spisok
> loop
> return NEXT _record;
> end loop;
> return ;
> end;'
>
> функцию вызываю
> select * from fun ('2005-09-10', (15,55,103)) не работает
> запрос отдельно
> select .......where allpeople.start_work<='2005-09-10' and
> allpeople.enterprise in (15,55,103));
> выполняеться, усли у функции параметры убрать и запрос жестко написать
> select .......where allpeople.start_work<='2005-09-10' and
> allpeople.enterprise in (15,55,103));
> тоже работает. Подскажите пожалуйста где ошибка.

Где??? В ДНК!!!

Извини, в запросе. ;) тяпница, однака

Fix:
1.
Код: plaintext
1.
2.
for _record in select .......where allpeople.start_work<=_start_date and
  allpeople.enterprise = ANY (_spisok)
2.
Код: plaintext
1.
select * from fun ('2005-09-10', '{15,55,103}'::int4[])


P.S. хоть это исправление, но решение, звыняй, sucks!

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / объявление и передача массива в функцию plpgsql / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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