powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не работает order by _param в функции
6 сообщений из 6, страница 1 из 1
не работает order by _param в функции
    #33328828
tango18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем pgsql 8.0.3. on windows
и далее:
Код: plaintext
1.
create table tbl_test (id serial,s int4);

набиваю ее какими-нибудь данными
и создаю функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create or replace function sp_test(_flag int4) returns setof tbl_test as $$
declare 
 _rec record;
 _sortfield text;
begin
if _flag> 0  then _sortfield:='id';
else _sortfield:='s';
end if;

for _rec in select * from tbl_test order by _sortfield loop
return next _rec;
end loop;

return;
end;
$$ language plpgsql;

--запускаем
select * from sp_test(0);
получаем результат в порядке вставки данных в таблицу
(грубо говоря - при любом значении _flag отсортировано по id).
Можно ли объяснить этот феномен?
...
Рейтинг: 0 / 0
не работает order by _param в функции
    #33328849
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так:
Код: plaintext
1.
  for _rec in execute 'select * from tbl_test order by'  ||  _sortfield loop


P.S. Ну почему мне слово феномен вечно напоминает этот анекдот:
На приеме у врача:
- Что беспокоит?
- Вы понимаете, я утром встаю, а у меня яйца звенят. Я, наверное, феномен?
- Нет, батенька, не феномен, а мудозвон!

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
не работает order by _param в функции
    #33328886
tango18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Действительно - так работает.
Хотя это и не объяснение :)
...
Рейтинг: 0 / 0
не работает order by _param в функции
    #33328909
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tango18 wrote:
> Спасибо. Действительно - так работает.
> Хотя это и не объяснение :)

Объяснение:
Код: plaintext
select * from tbl_test order by  _sortfield
на этапе выполнения Вашего исходного варианта выглядит, например, так:
Код: plaintext
select * from tbl_test order by 's'

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
не работает order by _param в функции
    #33329497
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XM

Объяснение:
Код: plaintext
select * from tbl_test order by  _sortfield
на этапе выполнения Вашего исходного варианта выглядит, например, так:
Код: plaintext
select * from tbl_test order by 's'

Posted via ActualForum NNTP Server 1.3

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

Пообъясняй еще немножко, пожалуйста ;)
...
Рейтинг: 0 / 0
не работает order by _param в функции
    #33329612
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот именно "Вроде" ..

ORDER BY expression [ ASC | DESC | USING operator ]

order by может быть почему хочешь и по константе и по полю и по функйии

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


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