Avatar billede olmer Nybegynder
17. juni 2008 - 16:04 Der er 4 kommentarer og
1 løsning

Problem med case i en where clause

jeg er ved at lave en stored procedure med parametre, der kun skal inkluderes i where clausen hvis de eksisterer, dvs <> 0 i viste eksempel

SELECT * FROM V_ORDRE_KLADDER
    WHERE CASE WHEN @periodfrom <> 0 THEN
(order_delivery_Date  BETWEEN @periodfrom AND @periodto)END

Jeg får en syntaks fejl på dette (jo @periodfrom er erklæret), men man kan måske slet ikke gøre det på denne måde. Alle de eksempler jeg har googlet mig frem til returnere en værdi og ikke en ekspression

Ole
Avatar billede sherlock Nybegynder
17. juni 2008 - 22:19 #1
CREATE PROCEDURE dbo.procedure1
@periodfrom int,
@periodto  int
AS
BEGIN
SELECT v.*, @periodfrom FROM V_ORDRE_KLADDER v
    WHERE @periodfrom > 0 
        AND order_delivery_Date  BETWEEN @periodfrom AND @periodto
END
Avatar billede sherlock Nybegynder
17. juni 2008 - 22:23 #2
Simplere

CREATE PROCEDURE dbo.procedure1
@periodfrom int,
@periodto  int
AS
BEGIN
SELECT * FROM V_ORDRE_KLADDER
    WHERE @periodfrom > 0 
        AND order_delivery_Date  BETWEEN @periodfrom AND @periodto
END
Avatar billede olmer Nybegynder
18. juni 2008 - 09:38 #3
Jamen det var jo rigtigt simpelt, og noget mere overskueligt end den "if" konstruktion jeg har fået kreeret.
Tak for hjælpen og smid et svar

Ole
Avatar billede olmer Nybegynder
18. juni 2008 - 09:57 #4
Som en lille side note, kan nævnes at min stored procedure skrumpede fra 110 linier til 33 :-)
Avatar billede sherlock Nybegynder
18. juni 2008 - 12:17 #5
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester