powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / возврат таблицы из функции
15 сообщений из 15, страница 1 из 1
возврат таблицы из функции
    #35581169
valuez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ещё один вопрос по ф-иям

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 create function sp_custtable()
returns ????
as $$ 
select u.id, b.id, b.coordinates, bp.price, b.picture
from billboards b left join users u 
on b.id=u.id
inner join billboards_prices bp 
on b.default_price=bp.price
$$language sql;

а теперь вопрос что дописать вместо вопросов чтобы вернуть таблицу


З.Ы. если не затруднит то может выложите линк на такую доку (в доке по create function я не нашёл (или не понял)
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35581540
DAISER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35582426
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.postgresql.org/docs/current/static/xfunc-sql.html#XFUNC-SQL-TABLE-FUNCTIONS


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35582879
valuez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну хоть убейте не получается у меня из 3 таблиц создать через ф-ию одну... или это надо создавать view ?
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35583842
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ты сразу напиши запрос который те нада, а потом уже пихай его в функцию и сюда заодно неплохо бы было.
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35584743
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valuezну хоть убейте не получается у меня из 3 таблиц создать через ф-ию одну... или это надо создавать view ?попробуйте view, в некотором смысле постгрес работает с view лучше, чем с функциями.
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35584957
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBat valuezну хоть убейте не получается у меня из 3 таблиц создать через ф-ию одну... или это надо создавать view ?попробуйте view, в некотором смысле постгрес работает с view лучше, чем с функциями.
Поясните, в каком смысле?
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585034
valuez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
видимо я плохо поставил вопрос...
я хотел бы создать функцию которая выбирает несколько столбцов (с разными типами int, varchar, point) из разных таблиц. Пользователь видит их как одну таблицу и может в ней манипулировать данными. При этих манипуляциях заполняются главные таблицы.

Например:

есть таблицы T1 и T2
T1
id int not null Primary key, (autoincrement)
PN int(11) unique,
description text

T2
Name varchar(15) not null Primary key,
Coordinates point,
price float

из этих таблиц нужно состваить функцию которая выбирает к примеру из Т1 id и description а из Т2 Name и Coordinates. Пользователь видит их как одну общую таблицу... Манипулирует данными (INSERT, UPDATE) при этом эти же действия происходят с полями в тех таблицах из которых они взяты ( например пользователь заполнил в функции id аналогично заполняется поле id в T2).
ЗЫ. во VIEW манипуляций с данными делать нельзя
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585069
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_Поясните, в каком смысле?я имел в виду, что, например, при работе через view постгрес сможет использовать индекс, а для функции (как у автора в первом сообщении) возвращающей всю таблицу - только seqscan с последующей фильтрацией

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table t1 as select generate_series( 1 , 1000 ) as id;
create index i1 on t1 (id);

create function f1() returns setof t1 language 'sql' as 'select * from t1';
create view v1 as select * from t1;

explain analyze select * from f1() where id= 500 ;
explain analyze select * from v1 where id= 500 ;

drop function f1();
drop view v1;

drop table t1;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
nalbat=> explain analyze select * from f1() where id= 500 ;
                                            QUERY PLAN
---------------------------------------------------------------------------------------------------
 Function Scan on f1  (cost= 0 . 00 .. 262 . 50  rows= 5  width= 4 ) (actual time= 0 . 707 .. 0 . 775  rows= 1  loops= 1 )
   Filter: (id =  500 )
 Total runtime:  0 . 821  ms
( 3  rows)

nalbat=> explain analyze select * from v1 where id= 500 ;
                                                QUERY PLAN
-----------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on t1  (cost= 4 . 29 .. 9 . 62  rows= 5  width= 4 ) (actual time= 0 . 048 .. 0 . 050  rows= 1  loops= 1 )
   Recheck Cond: (id =  500 )
   ->  Bitmap Index Scan on i1  (cost= 0 . 00 .. 4 . 29  rows= 5  width= 0 ) (actual time= 0 . 040 .. 0 . 040  rows= 1  loops= 1 )
         Index Cond: (id =  500 )
 Total runtime:  0 . 091  ms
( 5  rows)
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585124
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valuezя хотел бы создать функцию которая выбирает несколько столбцов (с разными типами int, varchar, point) из разных таблиц. Пользователь видит их как одну таблицу и может в ней манипулировать данными. При этих манипуляциях заполняются главные таблицы.

ЗЫ. во VIEW манипуляций с данными делать нельзядля этого можно сделать RULE на VIEW
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585182
valuez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBatдля этого можно сделать RULE на VIEW

вот до этого я и недодумался... спасибо
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585304
valuez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторEvent is one of SELECT, UPDATE, DELETE or INSERT.

а если надо select, update и insert
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585325
valuez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторEvent is one of SELECT, UPDATE, DELETE or INSERT.
а если надо SELECT, UPDATE, INSERT это надо несколько rules делать или лучше пользователю GRANT PERMISSIONS
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585387
MySQLCraft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valuezвидимо я плохо поставил вопрос...
я хотел бы создать функцию которая выбирает несколько столбцов (с разными типами int, varchar, point) из разных таблиц. Пользователь видит их как одну таблицу и может в ней манипулировать данными. При этих манипуляциях заполняются главные таблицы.

Например:

есть таблицы T1 и T2
T1
id int not null Primary key, (autoincrement)
PN int(11) unique,
description text

T2
Name varchar(15) not null Primary key,
Coordinates point,
price float

из этих таблиц нужно состваить функцию которая выбирает к примеру из Т1 id и description а из Т2 Name и Coordinates. Пользователь видит их как одну общую таблицу... Манипулирует данными (INSERT, UPDATE) при этом эти же действия происходят с полями в тех таблицах из которых они взяты ( например пользователь заполнил в функции id аналогично заполняется поле id в T2).
ЗЫ. во VIEW манипуляций с данными делать нельзя

Мне вот непонятно по какому ключу Автор собирается объединять любые столбцы из этих двух таблиц в одну? В данном случае не важно вьюха это или функция или еще что... Автор хочет получить объединенную таблицу из двух независимых справочников. Не по физическому ли порядку записей он хочет этого добиться?
...
Рейтинг: 0 / 0
возврат таблицы из функции
    #35585405
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valuez авторEvent is one of SELECT, UPDATE, DELETE or INSERT.а если надо SELECT, UPDATE, INSERT это надо несколько rules делать или лучше пользователю GRANT PERMISSIONSнесколько rule-ов. а при чем тут permisiions?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / возврат таблицы из функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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