1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
726
726
EMPFEHLEN
-
Hallo @ all,
bin ein SQL-Einsteiger und stoße grad auf ein Problem, bei dem ihr mir 100% helfen könnt.
Und zwar habe ich eine SP mit der ich eine Suche auf eine Tabelle ausführen möchte und das mit mehreren Werten,
wobei die Anzahl der Werte variiert.
z.B: mit Werten
@A
@B
@C
@D
Wenn kein wert übergeben wurde, dann wird dieser auf NULL gesetzt
@A AND @B AND @C AND @D -> geht ja nicht da nicht ale werte immer vorhanden sind
Nun meine Frage: Wie schreibe ich dasmit besten performance in einer SP?
Gruß,
kspiel
-
Mehrere DBMS bieten Stored Procedures an. Um Welche handelt es sich? Oracle? MS SQL? sonstwas?
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
MS SQL is es
-
Code :
1
Create Procedure MeineProc( @a varchar(50) =null, @b varchar(50)=null, @c varchar(50)=null ....)
Grüsse bbDon't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Danke für die Antwort, aber mir geht es nicht um das deklarieren der Variablen, sondern mehr um den zu erstellenden Vergleich der SP.
Wie schreibe ich diese vernünftig um die den Fall abzudecken, dass ich einmal 2 Werte übergebe und einmal z.B. alle.
Ich habe erstmal es so geschaft:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
CREATE PROCEDURE [dbo].[spTest] ( @A varchar, @B varchar, @C varchar, @D varchar ) AS DECLARE @Befehl varchar(4000) SELECT @Befehl = 'SELECT Spalte A, Spalte B, Spalte C FROM tblTest' SELECT @Befehl = @Befehl + ' WHERE' IF @A IS NOT NULL BEGIN SELECT @Befehl = @Befehl + 'blabla' END IF @B IS NOT NULL BEGIN SELECT @Befehl = @Befehl + 'blabla' END IF @C IS NOT NULL BEGIN SELECT @Befehl = @Befehl + 'blabla' END IF @C IS NOT NULL BEGIN SELECT @Befehl = @Befehl + 'blabla' END EXEC(@Befehl)
So hatte ich den String zusammengebaut und ausgeführt, aber ist ja nicht das klugste was man machen kann oder?
Wie kann man das anders/besser, ohne solch einen String zu bauen, machen?
Hoffe ihr versteht mein anliegen.
Gruß,
kspiel
-
niemand eine idee?
-
Code :
1 2 3 4 5 6
SELECT Spalte A, Spalte B, Spalte C FROM tblTest WHERE A like ''+ ISNULL(@A,'')+'%''' And B like ''+ ISNULL(@b,'')+'%''' And C like ''+ ISNULL(@b,'')+'%'''
BEM: SQLBefehle in Stored Procedures über EXEC auszuführen ist in den meisten Fällen totaler Blödsinn- der interne QueryOptimizer legt dann total unsinnige Ausführungspläne an und die Verwendung einer SP ist dann eigentlich überflüssig
LG BBDon't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.
-
Ähnliche Themen
-
[MSSQL] Eine Stored procedure innerhalb eine Stored procedure anrufen + ohne OUT para
Von Jantz im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 26.07.10, 19:21 -
Online Foto Storage
Von moskovich im Forum Fotografie & DigitalfotografieAntworten: 2Letzter Beitrag: 08.02.10, 09:27 -
Stored Procedure mit mehreren Executes auf MS-SQL
Von Menduso im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 11.06.08, 09:47 -
Network Attached Storage
Von Radhad im Forum Virtualisierung (VMWare, Virtual PC & Co.)Antworten: 4Letzter Beitrag: 15.03.07, 09:02 -
PCI Mass Storage ?
Von JTBKN im Forum HardwareAntworten: 10Letzter Beitrag: 26.09.02, 21:39





Zitieren



Login





