From: | Martin Spott <Martin(dot)Spott(at)mgras(dot)net> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: FOR-LOOP durch eine Ergebnismenge |
Date: | 2013-03-29 20:35:52 |
Message-ID: | kj4tv6$p036kj4tv6$p036$1@osprey.mgras.de@osprey.mgras.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Andreas Kretschmer wrote:
> execute 'select * from ' || layer || ';';
>
> *untested*
.... aber schon nah dran ! ;-)
Wenn ich im FOR nur die gesuchte Spalte selektiere, wie beschrieben
als:
FOR layer IN SELECT f_table_name FROM geometry_columns WHERE f_table_name LIKE 'clc06_sand'
dann kriege ich mit dem obigen EXECUTE beim Aufruf der Funktion den
Fehler:
psql:testproc.sql:18: ERROR: syntax error at or near ")"
ZEILE 1: SELECT * FROM (clc06_sand);
Wenn ich aber den kompletten Record aus der View selektiere:
FOR layer IN SELECT * FROM geometry_columns WHERE f_table_name LIKE 'clc06_sand'
dann kann ich im EXECUTE mittels "layer.f_table_name" (anstelle nur von
"layer") wie gewuenscht damit operieren. Leider muss ich mir letztlich
doch was anderes ueberlegen, denn bei:
EXECUTE 'SELECT * INTO test FROM ' || layer.f_table_name || ';';
kriege ich letztlich:
psql:testproc.sql:18: ERROR: EXECUTE of SELECT ... INTO is not implemented
TIP: You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead.
Dennoch vielen Dank fuer den zielfuehrenden Hinweis, der Versuch mit
EXECUTE 'CREATE TABLE test AS SELECT * FROM ' || layer.f_table_name || ';';
fuehrte letztlich zum gewuenschten Ergebnis !
Martin.
--
Unix _IS_ user friendly - it's just selective about who its friends are !
--------------------------------------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Kretschmer | 2013-03-30 07:36:46 | Re: FOR-LOOP durch eine Ergebnismenge |
Previous Message | Andreas Kretschmer | 2013-03-29 18:05:32 | Re: FOR-LOOP durch eine Ergebnismenge |