Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращение RecordSet из процедуры / 8 сообщений из 8, страница 1 из 1
08.12.2004, 14:32
    #32818798
Возвращение RecordSet из процедуры
Привет всем!

Сорри но только в процессе изучения и всех фишек еще не выучил.

Вопрос такой как возвратить RecordSet из процедуры при этом не создавая типа.

ТОесть сейчас я делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TYPE rs_test AS (
	Field_1 int4,
	Field_2 int4
);

CREATE OR REPLACE FUNCTION prc_test(int4)
 RETURNS SETOF rs_test AS
'
DECLARE 
	vP_Value ALIAS FOR $1;

	vSQL text;
	vRS_Result rs_test%ROWTYPE;
BEGIN
	
	vSQL := \'
		SELECT 
			Field_1, Field_2
		FROM 
			tbTable
		WHERE
			PA.InxField = \' || vP_Value ;
		
	FOR vRS_Result IN EXECUTE vSQL LOOP
		RETURN NEXT vRS_Result;
	END LOOP;

	RETURN ;
END
'LANGUAGE 'plpgsql' IMMUTABLE SECURITY DEFINER;

а хотелосьбы так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION prc_test(int4)
 RETURNS ?????????????/ AS
'
DECLARE 
	vP_Value ALIAS FOR $1;
BEGIN
	
	SELECT 
		Field_1, Field_2
	FROM 
		tbTable
	WHERE
		PA.InxField = vP_Value ;
		
	RETURN ;
END
'LANGUAGE 'plpgsql' IMMUTABLE SECURITY DEFINER;

Всем спасибо !!
...
Рейтинг: 0 / 0
08.12.2004, 16:14
    #32819086
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение RecordSet из процедуры
Насколько я знаю - тип объявлять обязательно.
...
Рейтинг: 0 / 0
08.12.2004, 17:06
    #32819253
Возвращение RecordSet из процедуры
Порылся в форуме. Судя из того, что народ пишет, ДА нужно объявлять тип.

Жаль, разочаровал меня Постгре.

Спасибо всем.
...
Рейтинг: 0 / 0
08.12.2004, 19:03
    #32819512
MaximZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение RecordSet из процедуры
Дмитрий ГолубевПорылся в форуме. Судя из того, что народ пишет, ДА нужно объявлять тип.

Жаль, разочаровал меня Постгре.

Спасибо всем.

Ну, это не самая большая причина для разочарования. Посмотрим что в восьмой версии будет.
...
Рейтинг: 0 / 0
08.12.2004, 21:45
    #32819654
centur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение RecordSet из процедуры
если возвращать RECORD то можно обрабатывать выборку как
select * from f() as (text my_text,int4 my_int)
где перечисляете все поля рекорда с типами. неудобно но работает, и без типов
...
Рейтинг: 0 / 0
10.12.2004, 18:06
    #32824036
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение RecordSet из процедуры
А чем объявление типа так плохо?
В Оракле, по-моему, тоже обязательно объявлять возвращаемый тип.

Порой, когда меняется структура БД, типы ох как помогают...
...
Рейтинг: 0 / 0
10.12.2004, 22:55
    #32824324
gamych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение RecordSet из процедуры
Дмитрий ГолубевПривет всем!

Сорри но только в процессе изучения и всех фишек еще не выучил.

Вопрос такой как возвратить RecordSet из процедуры при этом не создавая типа.

Насколько я понимаю, ты хочешь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
... returns setof record as '
declare r record;
...
begin
   ... loop
     select into r ...
     return next r;
   end loop;
   ...
   return;
end;
' ...
...
Рейтинг: 0 / 0
14.12.2004, 22:18
    #32827593
centur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение RecordSet из процедуры
Кувалдин РоманА чем объявление типа так плохо?
В Оракле, по-моему, тоже обязательно объявлять возвращаемый тип.

Порой, когда меняется структура БД, типы ох как помогают...

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


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