Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возврат функцией нескольких селектов. / 18 сообщений из 18, страница 1 из 1
11.03.2008, 17:32
    #35183312
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Господа, добрый вечер.
Могу ли я через функцию вернуть несколько селектов?
В частности, это нужно для заполнения адаптера, реализация коего присутствует.

Спасибо.

Он обычный сталевар.
Он делает жесть.
...
Рейтинг: 0 / 0
11.03.2008, 17:43
    #35183362
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
С помощью функции можно сделать очень многое в том числе и возврат нескольких селектов.
Можно это сделать и без использования функции.
Если нужна более конкретная помощь, то опишите подробнее, что Вам нужно в итоге получить и на основе каких данных.
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
11.03.2008, 17:51
    #35183390
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Dan BlackС помощью функции можно сделать очень многое в том числе и возврат нескольких селектов.
Можно это сделать и без использования функции.
Если нужна более конкретная помощь, то опишите подробнее, что Вам нужно в итоге получить и на основе каких данных.
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

Доступ к таблицам осуществляется исключительно из функций.
Какое возвращаемое значение необходимо выставить у функции, чтобы одним обращением к ней вернуть несколько селектов, которые сформируют необходимые для создания отчётов таблицы в датасете.
...
Рейтинг: 0 / 0
11.03.2008, 18:06
    #35183427
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
returns setof record
http://www.sql.ru/forum/actualthread.aspx?tid=531568
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
11.03.2008, 18:28
    #35183472
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Dan Black returns setof record
http://www.sql.ru/forum/actualthread.aspx?tid=531568
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

Это возврат результата одного селекта.
Мне необходим результат нескольких селектов.
...
Рейтинг: 0 / 0
11.03.2008, 18:32
    #35183487
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Что подразумевается по несколькими селектами и по какому правилу эти селекты должны объединяться в единый результат?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
11.03.2008, 18:34
    #35183488
_ssergn_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
AFAIK этот изврат отсутствует в PostgreSQL. Да он есть в каком-нибудь Sybase, но лучше бы его и там не было
...
Рейтинг: 0 / 0
11.03.2008, 18:37
    #35183494
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
_ssergn_AFAIK этот изврат отсутствует в PostgreSQL. Да он есть в каком-нибудь Sybase, но лучше бы его и там не было
Имхо, при нескольких селектав в функции возвращать только последний, тоже не лучшее решение.
...
Рейтинг: 0 / 0
11.03.2008, 18:40
    #35183497
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
возвращайте несколько курсоров
...
Рейтинг: 0 / 0
11.03.2008, 18:50
    #35183514
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Хнык Dan Black returns setof record
http://www.sql.ru/forum/actualthread.aspx?tid=531568
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

Это возврат результата одного селекта.
Мне необходим результат нескольких селектов.может быть всё проще и Вам нужен просто union ?
Код: plaintext
1.
2.
3.
4.
5.
6.
seb=> select  1  as id, 'a' as a, 'b' as b union select  2 , 'c', 'd';
 id | a | b
----+---+---
   1  | a | b
   2  | c | d
( 2  rows)
...
Рейтинг: 0 / 0
11.03.2008, 18:54
    #35183518
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
столбцы присутствующие в первом select и отсутствующие во втором можно заполнить например null
Код: plaintext
1.
2.
3.
4.
5.
6.
seb=> select  1  as id, 'a' as a, 'b' as b union select null, null, 'd';
 id | a | b
----+---+---
   1  | a | b
    |   | d
( 2  rows)


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
11.03.2008, 19:04
    #35183540
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Ёшможет быть всё проще и Вам нужен просто union
Нет, мне нужно возврат нескольких селектов.
Пока что решил разбить селекты на несколько функций и вызывать их одной командой, в результате получаю датасет с несколькими таблицами. В том случае, если использую временные таблицы, которые используются в этих функциях, всё становится ещё хуже.
Код: plaintext
NpgsqlCommand cmd = new NpgsqlCommand("select f_createtemptables(); select f_selecttable1(); select f_selettable2; select f_droptemptables;");

Не самое лучшее решение.
...
Рейтинг: 0 / 0
11.03.2008, 19:11
    #35183557
Dan Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Что мешает использовать несколько отдельных запросов?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
11.03.2008, 19:59
    #35183625
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Dan BlackЧто мешает использовать несколько отдельных запросов?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

При ошибке в процессе выполнения череды запросов может невыполниться последний, в котором удаляются темповые таблицы.
...
Рейтинг: 0 / 0
11.03.2008, 20:18
    #35183655
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Хнык Dan BlackЧто мешает использовать несколько отдельных запросов?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

При ошибке в процессе выполнения череды запросов может невыполниться последний, в котором удаляются темповые таблицы.


реализуйте логику в клиенте
...
Рейтинг: 0 / 0
11.03.2008, 22:48
    #35183811
Хнык
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Winnipuh Хнык Dan BlackЧто мешает использовать несколько отдельных запросов?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

При ошибке в процессе выполнения череды запросов может невыполниться последний, в котором удаляются темповые таблицы.
реализуйте логику в клиенте
Логику выборки? о_0
...
Рейтинг: 0 / 0
12.03.2008, 00:01
    #35183873
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Хнык Dan BlackЧто мешает использовать несколько отдельных запросов?
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 

При ошибке в процессе выполнения череды запросов может невыполниться последний, в котором удаляются темповые таблицы.брр... непонятно... :) так транзакция откатится и временные таблицы удалятся.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
seb=> CREATE TEMP TABLE ttt (id serial, val text) on commit drop;
NOTICE:  CREATE TABLE создаст подразумеваемую последовательность "ttt_id_seq" для serial-колонки "ttt.id"
CREATE TABLE
seb=> insert into ttt values (default, 'aaa');
INSERT  0   1 
seb=> select * from ttt;
 id | val
----+-----
   1  | aaa
( 1  запись)

seb=> error;
ERROR:  ошибка синтаксиса в или рядом "error"
LINE  1 : error;
        ^
seb=> end;
ROLLBACK
seb=> select * from ttt;
ERROR:  отношение "ttt" не существует
...
Рейтинг: 0 / 0
12.03.2008, 18:51
    #35186187
v0v4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат функцией нескольких селектов.
Если UNION не подходит, то RETURN next ...
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возврат функцией нескольких селектов. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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