AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken PL/SQL - Statement - Where-Klausel dynamisch zusammensetzen?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Pilloker · begonnen am 22. Mai 2009 · letzter Beitrag vom 22. Mai 2009
Antwort Antwort
Pilloker
(Gast)

n/a Beiträge
 
#1

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

  Alt 22. Mai 2009, 10:25
Datenbank: Oracle • Version: 10g • Zugriff über: uninteressant
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]
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: PL/SQL - Statement - Where-Klausel dynamisch zusammenset

  Alt 22. Mai 2009, 10:57
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.
  Mit Zitat antworten Zitat
Pilloker
(Gast)

n/a Beiträge
 
#3

Re: PL/SQL - Statement - Where-Klausel dynamisch zusammenset

  Alt 22. Mai 2009, 12:14
Danke Stephan für den Tipp.

Execute Immediate passt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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