FOR-LOOP durch eine Ergebnismenge

From: Martin Spott <Martin(dot)Spott(at)mgras(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: FOR-LOOP durch eine Ergebnismenge
Date: 2013-03-29 17:47:36
Message-ID: kj4k3m$r85c$1@osprey.mgras.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Moin zusammen,

das Verfahren ist in etlichen Quellen zu Genuege beschrieben und im
Grunde auch nicht mehr brandneu, trotzdem steh' ich mit einer ganz
simplen Angelegenheit irgendwie sehr daemlich auf der Leitung.
Vielleicht mag jemand so freundlich sein und mir weiterhelfen.

Ich habe da eine View, aus der allerlei nette Tabellen-Namen
aufgelistet werden koennen - den Inhalt kann man sich exemplarisch so
angucken:

landcover=> SELECT * FROM geometry_columns WHERE f_table_name LIKE 'clc06_sand';
f_table_catalog | f_table_schema | f_table_name | f_geometry_column | coord_dimension | srid | type
-----------------+----------------+--------------+-------------------+-----------------+------+---------
landcover | public | clc06_sand | wkb_geometry | 2 | 4326 | POLYGON
(1 Zeile)

Natuerlich gibt es noch ein paar mehr Tabellen und auf etliche davon
will ich das gleiche Verfahren anwenden (ein SELECT * INTO ...., ich
erwarte also gar keine Ausgabe). Zum Test, ob das auch klappt, habe
ich eine kleine Funktion, die mir beweisen soll, dass der LOOP
funktioniert:

CREATE OR REPLACE FUNCTION testproc()
RETURNS void
AS $$
DECLARE
layer record;
BEGIN
FOR layer IN SELECT f_table_name FROM geometry_columns WHERE f_table_name LIKE 'clc06_sand'
LOOP
SELECT * FROM layer;
END LOOP;
END;
$$
LANGUAGE 'plpgsql';

Leider funktioniert der Beweis nicht:

landcover=> SELECT testproc();
ERROR: relation "layer" does not exist
ZEILE 1: SELECT * FROM layer

Bedeutet das, dass ich in dem LOOP den Inhalt des Iterators aus dem FOR
nicht einfach als Tabellen-Namen weiterverwenden darf ?

Besten Dank fuer Erleuchtung,
Martin.
--
Unix _IS_ user friendly - it's just selective about who its friends are !
--------------------------------------------------------------------------

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Kretschmer 2013-03-29 18:05:32 Re: FOR-LOOP durch eine Ergebnismenge
Previous Message Susanne Ebrecht 2013-02-25 10:22:07 Re: [pgsql-de-allgemein] PG Stand FOSSGIS 2013 - Konferenz für Open Source GIS und Open Data, HSR Rapperswil, 12.-14. Juni