Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача массива в функцию. / 2 сообщений из 2, страница 1 из 1
22.08.2007, 10:58
    #34744018
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача массива в функцию.
есь таблица Т1 и таблица Т2

Т1 состоит из

id serial
date_add date
nazva varchar


T2
id int8
nazvanie_tovara varchar
kolvo int2
cena numeric(10,2)

помогите написать функцию на pl/pgSQL которая принимала в качесве параметров $1 nazva для Т1 и $2 массив стотоящий из [nazvanie_tovara, kolvo, cena]

т.е. при вызофе функции с передаными параметрами происходила вставка в Т1
далее получаем ИД для Т1 из последовательноти и в Т2 вносим значения массива
...
Рейтинг: 0 / 0
22.08.2007, 13:03
    #34744605
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача массива в функцию.
вот методом тыка и втыкания в мануал сделал почти что то что хотел

Код: 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 OR REPLACE FUNCTION "ins4" (character varying, character varying[], integer[], numeric[]) RETURNS boolean AS 'DECLARE
newnode int4;
t2name varchar[];
kol int4[];
cen numeric[];
arrcolvo int4;
x int4;

BEGIN
insert into t1 (nazva) VALUES ($1);
SELECT last_value FROM t1_id_seq INTO newnode;

t2name := $2;
kol := $3;
cen := $4;
x := 1;
select array_upper(t2name, 1) into arrcolvo;

WHILE arrcolvo >= x LOOP
insert into t2 (id, dnazva, kolvo, cena) VALUES (newnode, t2name[x], kol[x], cen[x]);    
x := x + 1;
END LOOP;


RETURN 't';
END;' LANGUAGE "plpgsql"
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER

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


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