Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / возврат таблицы из функции / 15 сообщений из 15, страница 1 из 1
07.10.2008, 17:14
    #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
07.10.2008, 19:22
    #35581540
DAISER
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
...
Рейтинг: 0 / 0
08.10.2008, 11:16
    #35582426
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
http://www.postgresql.org/docs/current/static/xfunc-sql.html#XFUNC-SQL-TABLE-FUNCTIONS


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
08.10.2008, 12:48
    #35582879
valuez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
ну хоть убейте не получается у меня из 3 таблиц создать через ф-ию одну... или это надо создавать view ?
...
Рейтинг: 0 / 0
08.10.2008, 17:27
    #35583842
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
а ты сразу напиши запрос который те нада, а потом уже пихай его в функцию и сюда заодно неплохо бы было.
...
Рейтинг: 0 / 0
09.10.2008, 09:53
    #35584743
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
valuezну хоть убейте не получается у меня из 3 таблиц создать через ф-ию одну... или это надо создавать view ?попробуйте view, в некотором смысле постгрес работает с view лучше, чем с функциями.
...
Рейтинг: 0 / 0
09.10.2008, 11:03
    #35584957
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
LeXa NalBat valuezну хоть убейте не получается у меня из 3 таблиц создать через ф-ию одну... или это надо создавать view ?попробуйте view, в некотором смысле постгрес работает с view лучше, чем с функциями.
Поясните, в каком смысле?
...
Рейтинг: 0 / 0
09.10.2008, 11:31
    #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
09.10.2008, 11:40
    #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
09.10.2008, 11:55
    #35585124
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
valuezя хотел бы создать функцию которая выбирает несколько столбцов (с разными типами int, varchar, point) из разных таблиц. Пользователь видит их как одну таблицу и может в ней манипулировать данными. При этих манипуляциях заполняются главные таблицы.

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

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

а если надо select, update и insert
...
Рейтинг: 0 / 0
09.10.2008, 12:48
    #35585325
valuez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
авторEvent is one of SELECT, UPDATE, DELETE or INSERT.
а если надо SELECT, UPDATE, INSERT это надо несколько rules делать или лучше пользователю GRANT PERMISSIONS
...
Рейтинг: 0 / 0
09.10.2008, 13:05
    #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
09.10.2008, 13:08
    #35585405
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат таблицы из функции
valuez авторEvent is one of SELECT, UPDATE, DELETE or INSERT.а если надо SELECT, UPDATE, INSERT это надо несколько rules делать или лучше пользователю GRANT PERMISSIONSнесколько rule-ов. а при чем тут permisiions?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / возврат таблицы из функции / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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