Re: store multiple rows with the SELECT INTO statement
От | Adrian Klaver |
---|---|
Тема | Re: store multiple rows with the SELECT INTO statement |
Дата | |
Msg-id | 522695B9.9070300@gmail.com обсуждение исходный текст |
Ответ на | store multiple rows with the SELECT INTO statement ("Janek Sendrowski" <janek12@web.de>) |
Список | pgsql-general |
On 09/03/2013 04:34 PM, Janek Sendrowski wrote: > A loop through every input sentence > FOR i IN 1..array_length(p_sentence, 1) LOOP > FOR some_rec IN EXECUTE "SELECT * FROM table WHERE "Fulltextsearch > statement" LOOP > "Insert the current record data into the temp table" > END LOOP; > END LOOP; > Do a next query on the table I am CCing the list, other people will probably have other solutions to offer. To do what you show something like below. A shorter method would use FOREACH for looping through the array, see; 39.6.5. Looping Through Arrays CREATE TABLE source_table(id int, fld_1 varchar, fld_2 boolean); INSERT INTO source_table VALUES (1, 'test', 't'), (2, 'test2', 'f'), (3, 'test3', 't'); CREATE OR REPLACE FUNCTION public.test_fnc() RETURNS void LANGUAGE plpgsql AS $function$ DECLARE array_var integer[] := '{1, 2, 3}'; source_rec record; target_rec record; BEGIN CREATE TEMP TABLE temp_tbl(id int, fld_1 varchar, fld_2 boolean); FOR i IN 1..array_length(array_var, 1) LOOP SELECT INTO source_rec * FROM source_table WHERE id = array_var[i]; INSERT INTO temp_tbl VALUES(source_rec.id, source_rec.fld_1, source_rec.fld_2); SELECT INTO target_rec * FROM temp_tbl WHERE id = array_var[i]; RAISE NOTICE 'Id is %, fld_1 is %, fld_2 is %', target_rec.id, target_rec.fld_1, target_rec.fld_2; END LOOP; DROP TABLE temp_tbl; RETURN; END; $function$ ; -- Adrian Klaver adrian.klaver@gmail.com
В списке pgsql-general по дате отправления: