Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Select aus String in DML (https://www.delphipraxis.net/190240-select-aus-string-dml.html)

ZOD 15. Sep 2016 13:46

Datenbank: Firebird • Version: 2.5 • Zugriff über: DML

Select aus String in DML
 
Gibt es eine Möglichkeit, innerhalb eines select einen Subselect durchzuführen,
dessen SQL-Kommando als String zum Zeitpunkt der Abfrage gebildet wird.

Beispiel:
Tabelle1 hat folgende Spalten
tmpID: integer
tmpTabelle: char(31)
tmpSpalte: char(31)

nun möchte ich folgende Abfrage erzeugen (Metacode):

Code:
select
(select x.<y.tmpSpalte> from <y.tmpTabelle> x where x.id = y.tmpID)
from Tabelle1 y
Das ganze ist natürlich z.B. im Delphi als CommandText-String erzeugbar und kann dann an die DB
gesendet werden. Aber ich möchte wenn möglich diese Art Abruf z.B. in einer stored procedure verwenden.
Ich hoffe, ich konnte meine Frage einigermaßen klar formulieren.

Danke für Tips.

TBx 15. Sep 2016 14:37

AW: Select aus String in DML
 
hmm, direkt als SQL-Statement wird das wohl nichts.
Aber mit SP bist Du schon auf dem richtigen Weg, selecte Dir darin Dein Statement zusammen und führe es dann über EXECUTE STATEMENT aus.

Hope it helps

mkinzler 15. Sep 2016 14:47

AW: Select aus String in DML
 
Zu Laufzeit generierte Statements kann man wie folgt absetzen:

SQL-Code:
execute block
returns (erg <Typ>)
as
  declare variable _id integer;
  declare variable _t char(31);
  declare variable _s char(31);
begin
  for select
    id, tmpTabelle, tmpSpalte
  from
    <tabelley> into :_i, :_t, :_s
  do
  begin
    execute statement 'select ' || :s || ' from ' || :t || ' where id = ' || :_id || ';' into :erg;
    suspend;
  end;
end;

ZOD 16. Sep 2016 08:01

AW: Select aus String in DML
 
@mkinzler
klasse - genau das habe ich gesucht. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz