Hallo Leute!
Habe seit kurzem begonnen mich mit T-SQL und Stored Procedures zu beschäftigen. Ich verusche z.zT. eine Prozedur zu schreiben, die anhand verschiedener Kriterien ([</>/=] , datum, User_ID) Einträge aus einer Tabelle auslesen soll. Dies geschieht indem ich, ganz trivial, erstmal jedes Datum in der Tabelle anhand der [</>/=] und dem übergebenen Datum hole. Danach durchlaufe ich die ERgebnisse und prüfe zu welcher User_ID der entsprechende Eintrag gehört. Nun Gut! Eigentlich funktioniert das auch alles, nur bekomme ich eben für jeden gefundenen Eintrag eine SELECT-Ausgabe! Damit kommt meine Anwendung nicht zurecht und ich erhalte eben nur einen Eintrag in meiner Auflistung.
Nun zu meiner eigentlichen Frage: Gibt es eine möglichkeit die SELECT's irgendwie zusammenzufassen? Könnte ja alles in ein Array packen, aber wie kann ich dieses dann identisch wie eine SELECT-Abfrage ausgeben lassen? Kann doch eigentlich garnicht so schwer sein. Bei so einer verzwickten Fragestellung googelt man sich da aber einen an die klatsche.
Hier mal noch der Surce:
Gruß Sebbi
Habe seit kurzem begonnen mich mit T-SQL und Stored Procedures zu beschäftigen. Ich verusche z.zT. eine Prozedur zu schreiben, die anhand verschiedener Kriterien ([</>/=] , datum, User_ID) Einträge aus einer Tabelle auslesen soll. Dies geschieht indem ich, ganz trivial, erstmal jedes Datum in der Tabelle anhand der [</>/=] und dem übergebenen Datum hole. Danach durchlaufe ich die ERgebnisse und prüfe zu welcher User_ID der entsprechende Eintrag gehört. Nun Gut! Eigentlich funktioniert das auch alles, nur bekomme ich eben für jeden gefundenen Eintrag eine SELECT-Ausgabe! Damit kommt meine Anwendung nicht zurecht und ich erhalte eben nur einen Eintrag in meiner Auflistung.
Nun zu meiner eigentlichen Frage: Gibt es eine möglichkeit die SELECT's irgendwie zusammenzufassen? Könnte ja alles in ein Array packen, aber wie kann ich dieses dann identisch wie eine SELECT-Abfrage ausgeben lassen? Kann doch eigentlich garnicht so schwer sein. Bei so einer verzwickten Fragestellung googelt man sich da aber einen an die klatsche.
Hier mal noch der Surce:
Code:
alter procedure searchAkquiseNachhakenSonstige @criteria varchar(2), @datum datetime, @tbl_User_ID As int AS -- START: CHECK THE CRITERIA FOR THE SELECTION IF @criteria = '<' DECLARE adressen_cursor CURSOR FOR SELECT ID,tbl_User_ID FROM tbl_Adressen WHERE AkquiseNachhaken < @datum ELSE IF @criteria = '=' DECLARE adressen_cursor CURSOR FOR SELECT ID,tbl_User_ID FROM tbl_Adressen WHERE AkquiseNachhaken = @datum ELSE IF @criteria = '>' DECLARE adressen_cursor CURSOR FOR SELECT ID,tbl_User_ID FROM tbl_Adressen WHERE AkquiseNachhaken > @datum ELSE DECLARE adressen_cursor CURSOR FOR SELECT ID,tbl_User_ID FROM tbl_Adressen WHERE 1 = 2 -- END DECLARE @varLongString as varchar OPEN adressen_cursor DECLARE @varID int,@varUserID int FETCH NEXT FROM adressen_cursor INTO @varID, @varUserID -- WRITE THE VALUES INTO THE VARIABLES WHILE(@@FETCH_STATUS <> - 1) -- NOT FAILED, OR CURSOR AT IT'S END BEGIN IF(@@FETCH_STATUS <> - 2) -- ROW NOT MISSING IF @tbl_User_ID = - 1 -- DON'T CARE ABOUT THE USER ID! SELECT * FROM tbl_Adressen WHERE ID = @varID ELSE SELECT * FROM tbl_Adressen WHERE ID = @varID AND tbl_User_ID = @varUserID FETCH NEXT FROM adressen_cursor INTO @varID, @varUserID END CLOSE adressen_cursor DEALLOCATE adressen_Cursor
Comment