powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как создать массив записей ?
6 сообщений из 6, страница 1 из 1
Как создать массив записей ?
    #33933230
Народ, помогите плиз. Мне нужно портировать оракловую версию ХП :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create or replace procedure qqq (p_id in integer) as 

TYPE t_rec IS RECORD ( id integer, ....);

TYPE t IS TABLE OF t_rec INDEX BY BINARY_INTEGER;

abc t;

BEGIN

   SELECT ....
   BULK COLLECT INTO abc 
   FROM table 
   WHERE table.id = p_id; 

   FOR idx IN abc.FIRST..abc.LAST LOOP
      dbms_output('id :'||abc(idx).id||.......);
   END LOOP; 

END;

Делаю в Постгрес :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TYPE t_rec AS ( id integer, ....);

CREATE OR REPLACE FUNCTION qqq(p_id IN INTEGER  ) RETURNS void AS
$BODY$
DECLARE 
   abc t_rec ARRAY[ 5 ]; 
BEGIN
...
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
На самом деле в ХП делается много чего, но я оставил только проблематичные места.
Возникли следующие вопросы :
Как создать массив записей ? На объявление
Код: plaintext
 abc t_rec ARRAY[ 5 ]; 
получаю ошибку что тип t_rec[] не существует.
Есть ли аналог оракловых FIRST и LAST для массивов(коллекций) в PostgreSQL ?
Есть ли аналог оракловых dbms_output и BULK COLLECT?
Thanks
...
Рейтинг: 0 / 0
Как создать массив записей ?
    #33933749
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К великому сожалению в постгресе нет массивов записей :-( Временная табличка?
...
Рейтинг: 0 / 0
Как создать массив записей ?
    #33934783
Жаль. Может тогда попробовать сделать несколько массивов единичных элементов вместо одного массива записей (В Oracle до 9i я именно так и поступал)? Можно PostgreSQL заставить работать с такой структурой ?
PS Так есть аналог Ораклового BULK COLLECT или нет ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как создать массив записей ?
    #39107712
Nashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, а как нынче это красиво решается? Массивы записей появились же уже
...
Рейтинг: 0 / 0
Как создать массив записей ?
    #39107736
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NashevНарод, а как нынче это красиво решается? Массивы записей появились же уже

сё так же, как и раньше

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
BEGIN;
CREATE TYPE t_rec AS ( id integer, xyz text);

DO
$BODY$
DECLARE 
   abc t_rec[5]; 
BEGIN
	abc:=ARRAY[ (1,'xyz')::t_rec, NULL];
	RAISE NOTICE '	%' , abc;
	
END;
$BODY$
;

ROLLBACK; -- подтираем
...
Рейтинг: 0 / 0
Как создать массив записей ?
    #39107773
Nashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как создать массив записей ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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