Перейти к содержимому


- - - - -

PostgreSQL - Вопросы и ответы


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 drnet

drnet
  • ♞♞♞♞♞♞♞♞♞

  • Динозавр Форума
  • 8 810 сообщений
  • Пол:Мужчина
  • Город:
  • Интересы:В детстве был конструктор Лего, увлечение осталось.<br />Создал свой Лего для взрослых :)

Отправлено 22.09.2008 - 20:19

Общая информация:
http://ru.wikipedia....wiki/PostgreSQL
Здесь можно задавать вопросы по этой базе данных.

Полный набор база + утилиты для разработки и установки можно скачать здесь
http://torrent.qwert...?id=41886&hit=1

#2 drnet

drnet
  • ♞♞♞♞♞♞♞♞♞

  • Динозавр Форума
  • 8 810 сообщений
  • Пол:Мужчина
  • Город:
  • Интересы:В детстве был конструктор Лего, увлечение осталось.<br />Создал свой Лего для взрослых :)

Отправлено 24.01.2009 - 01:00

1. Результаты запросов в функциях.
1.1.Как вывести результаты запроса из таблицы из нескольких строк?
В базе данных типа Mysql мы просто используем SELECT и последний такой запрос возвращает данные их хранимой процедуры. В постгре нет хранимых процедур - они просто не нужны.
Мы можем делать это разными способами. Самые удобные.
А. (На языке plpgsl )
Созадём тип
CREATE TYPE myselecttype AS
(
id int,
name varchar
);

CREATE FUNCTION aaa ()
RETURNS SET OF myselecttype AS
$_$
DECLARE
_ret  myselecttype%ROWTYPE;
BEGIN
FOR _ret IN
SELECT id,name FROM mytable
LOOP
RETURN NEXT _ret;
END LOOP;
RETURN;
END;$_$
LANGUAGE 'plpgsql' VOLATILE
  COST 100
  ROWS 1000;

На выходе мы получаем набор записей из таблицы, который может использоваться в дальнейшем.
ROWS  ограничивает возвращаемый набор данных, чтобы не перегрузить базу данных.
Б. Использовать курсоры.
Однако при этом надо помнить, что после выполнения процедуры и извлечения данных, курсоры нужно будет закрыть извне процедуры или выполнять всё в транзакции, тогда курсоры закроются автоматически после COMMIT.
Таким образом можно возвращать сколь угодно много наборов данных или результатов запросов.




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей