Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe in einer Oracle 9 DB eine Stored Procedure. Dort habe ich einen Cursor mit 400 Where Bedingungen. Bitte keine Kommentare wegen den 400 Where Bedingungen. Die Tabelle ist halt so und enthält Analysenwerte.

Jetzt ist es aber so, dass von den 400 Bedingungen schon mal ein oder zwei dynamsich wegfallen sollen. Ich meine ich habe mal gelesen, dass man in einer Where Bedingung ein if einbauen könnte. Kennt das jemand?

Frank

Geschrieben

ein if in einer where bedingung würde einiges einfacher machen in procedures, packages oder triggern. ist das erste mal, dass ich davon höre. ausprobiert habe ich es schon, leider ohne erfolg. kann mir aber auch nicht vorstellen, dass es klappt. musst du schon ein bißchen über umwege tricksen, z.b. mit or bedingungen, not exists, der dual tabelle, unterabfragen etc.

sollte du was bezgl. dem if heraus finden, bitte posten...

Geschrieben

Hallo Frank,

du kannst doch in den Where-Bedingungen so etwas einbinden:

WHERE ...

AND ( ( p_bedingung IS TRUE AND anz < 20 )

OR p_bedingung IS FALSE )

...

Ist doch quasi so etwas wie ne IF-Abfrage.

Gruss, Axl

Geschrieben

Hallo,

mir ist noch nicht ganz klar, wie du feststellen willst, welche where Bedingungen wann wegfallen sollen.

Wenn vor dem Absetzen des Statements klar ist, welche where Bedingungen greifen und welche nicht kansst du mit dem dynamic sql package von Oracle deine Sql Statements dynamisch erzeugen.

Infos zu dynamic sql siehe hier

Ansonsten mußt du wohl die where Bedingung entsprechend formulieren, wie vonAxlHammer schon gepostet.

Gruß Nils

Geschrieben

@axlhammer: das ist auch noch eine möglichkeit, allerdings macht dein beispiel nicht viel sinn. meistens will man ja erreichen, dass der select von der bedingung abhängig ist. ist in deinem fall ja nicht so, also muss man es schon so schreiben:

select name, vorname, email

from mitarbeiter_intern

where p_mitarbeiter_intern=true

union

select name, vorname, email

from mitarbeiter_extern

where p_mitarbeiter_intern=false;

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...