robotto7831a Geschrieben 25. Oktober 2005 Geschrieben 25. Oktober 2005 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
escito83 Geschrieben 25. Oktober 2005 Geschrieben 25. Oktober 2005 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...
AxlHammer Geschrieben 27. Oktober 2005 Geschrieben 27. Oktober 2005 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
robotto7831a Geschrieben 27. Oktober 2005 Autor Geschrieben 27. Oktober 2005 Danke. Ich werds mal probieren. Frank
tuxfriend Geschrieben 29. Oktober 2005 Geschrieben 29. Oktober 2005 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
robotto7831a Geschrieben 29. Oktober 2005 Autor Geschrieben 29. Oktober 2005 Dynamisches SQL wäre eine Möglichkeit aber das ganze hat sich erledigt. Wir lösen das Problem jetzt anders. Frank
escito83 Geschrieben 29. Oktober 2005 Geschrieben 29. Oktober 2005 @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;
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden