23. juni 2008 - 16:58Der er
5 kommentarer og 1 løsning
Extend procedure SELECT statement
Hi,
Det er egentlig simpelt nok ... jeg har en stored procedure som tager nogle argumenter ... nogle af disse argumenter bliver brugt i WHERE delen af min select ...
Problemet at at det ikke er altid disse skal med ... så den eneste løsning jeg har kunne få til at virke, er at teste om input er NULL, og så derefter være 100% sikker på at værdien enten er lav eller høj nok til at få alle rows med ...
Er dette eneste løsning ? Jeg ville egentlig helst gerne bare kunne extend min WHERE clause ... men synes ikke rigtig jeg kan få noget til at virke ... ( min fremgangs måde har været noget ala det sammen som man ville gøre i .NET )
Jeg ved så man kan lave en .NET Stored Procedure, men er der ikke performance hit i det? Og derefter er det jo også lidt mere besværligt at vedlige holde dem, da man så skal ind i VS, recompile, og smide ind igen ... her er det hele jo nemt at se hvad der præcis sker ....
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Jeg kan desvære ikke lige følge dig der ... enten er mit problem ikke forklaret godt nok eller også har du misforstået det ...
Men ISNULL er nice ... kendte jeg ik'.
Men til sagen igen....
SELECT ID, Name FROM table1 WHERE Name = @p0 ID => @p1 AND ID =< @p2
Hvis jeg nu ikke ønsker de sidste 2 ting med ... så skal jeg jo lave en helt ny query og bare have: SELECT ID, Name FROM table1 WHERE Name = @p0
Det jeg ønsker er at kunne extend min query til at indeholde at ID måske kan være over, under eller mellem en given værdi, hvis de parameters til min query er angivet.
Men det synes jeg bliver til en del quries i min Procudure ....
jeg er også ved at overveje om det er korrekt at prøve at implementere det som SP ... og man måske ikke bare skulle bruge SQL fra .NET
Så er vi jo også faktisk tilbage hvor jeg startede ... dog med forbedringer.
Men jeg kan godt se hvad du mener nu ... jeg skulle lige vide at du stadig ville have alle WHERE med i min main query, og ikke prøvede at fjerne dem, som egentlig var hvad jeg søgte ...
Men det vil et eller andet sted vel også være den hurtigste, da jeg så stadig kan styre hvordan indexes skal bruges, da jeg 100% har styr om WHERE række følgende ... og hurtig ville kunne se hvis den ikke bruger dem.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.