Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   PL/SQL - Statement - Where-Klausel dynamisch zusammensetzen? (https://www.delphipraxis.net/134447-pl-sql-statement-where-klausel-dynamisch-zusammensetzen.html)

Pilloker 22. Mai 2009 10:25

Datenbank: Oracle • Version: 10g • Zugriff über: uninteressant

PL/SQL - Statement - Where-Klausel dynamisch zusammensetzen?
 
Hallo,

ich muss in einem Package die Where-Klausel eines Statements dynamisch zusammensetzen.
Ziel ist es, je nachdem, ob bestimmte Bedingungen erfüllt sind, eine Einschränkung hinzufügen, oder weglassen.
Jetzt habe ich mir gedacht, dass ich die Einschränkungen als String vorbelege und dann einfach an das Statement anhänge, aber irgendwie haut das nicht so hin.

Ich möchte im Prinzip die Where-Klausel über Variablen dynamisch zusammenbauen können.

Delphi-Quellcode:
[...]
xFoo VARCHAR2(32767);
xBar VARCHAR2(32767);
[...]
IF foo THEN
   xFoo := ' AND pFoo=1';
END IF;

IF bar THEN
   xBar := ' AND pBar=1';
END IF;
SQL-Code:
for r_Data in
(
SELECT [...]
FROM [...]
WHERE [...] || xFoo || xBar
)
LOOP
[...]
END LOOP;
Das haut so natürlich nicht hin, da die UND-Verknüpfung die beiden Variablen an das letzte Where-Element anhängt, und diese nicht als eingene Elemente interpretiert.

Weiß jemand Rat?

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

nahpets 22. Mai 2009 10:57

Re: PL/SQL - Statement - Where-Klausel dynamisch zusammenset
 
Hallo,
das geht eigentlich relative einfach, Beispiele findest Du u. a. hier
bei Dynamisches SQL mit REF Cursorn oder EXECUTE IMMEDIATE, da hast Du beim Erstellen der SQL-Statements eigentlich alle Freiheiten.

Pilloker 22. Mai 2009 12:14

Re: PL/SQL - Statement - Where-Klausel dynamisch zusammenset
 
Danke Stephan für den Tipp.

Execute Immediate passt :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 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