Re: foreach in sql functions
От | Oleg Lebedev |
---|---|
Тема | Re: foreach in sql functions |
Дата | |
Msg-id | 993DBE5B4D02194382EC8DF8554A5273016DB6@postoffice.waterford.org обсуждение исходный текст |
Ответ на | foreach in sql functions ("Zac Hillier" <zac@affectors.net>) |
Список | pgsql-general |
Try something along the following lines: DROP FUNCTION crt_bsk_dtl (INTEGER); CREATE FUNCTION crt_bsk_dtl (INTEGER) RETURNS INTEGER AS ' DECLARE curs CURSOR FOR SELECT PrdKey FROM Prd WHERE Sts < 999; DECLARE rec RECORD; BEGIN OPEN curs; LOOP -- fetch next record FETCH curs INTO rec; EXIT WHEN NOT FOUND; INSERT INTO BskDtl (BskKey, PrdKey) VALUES ($1, rec.PrdKey); END LOOP; CLOSE curs; RETURN 1; END; ' language 'plpgsql'; -----Original Message----- From: Zac Hillier [mailto:zac@affectors.net] Sent: Wednesday, October 02, 2002 4:16 PM To: pgsql-general@postgresql.org Subject: [GENERAL] foreach in sql functions Hi All, I have only recently started using pgsql and would like to try some internal functions as it appears this would be quicker than running similar functions from php. Is it possible to write sql functions with a foreach style loop? CREATE FUNCTION crt_bsk_dtl(integer) RETURNS integer AS ' SELECT PrdKey FROM Prd WHERE Sts < 999; foreach(Prd.PrdKey){ INSERT INTO BskDtl (BskKey, PrdKey) VALUES ($1, Prd.PrdKey); } SELECT 1; ' LANGUAGE SQL Any help or pointers very much appreciated. Thanks Zac ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org
В списке pgsql-general по дате отправления: