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 Zitieren
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... Zitieren
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 Zitieren
robotto7831a Geschrieben 27. Oktober 2005 Autor Geschrieben 27. Oktober 2005 Danke. Ich werds mal probieren. Frank Zitieren
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 Zitieren
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 Zitieren
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; Zitieren
Empfohlene Beiträge
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.