Avatar billede gulbaek Nybegynder
12. marts 2003 - 19:59 Der er 11 kommentarer og
1 løsning

lidt hjælp til en stored procedure

Skal til at lave en stored procedure til at finde lejligheder.

den får bl.a. følgende data ind.

adresse
postnummer
by

nu skal jeg så have lavet det sådan at den stadig finder det ønskede data, hvis f.eks.

adresse = null
postnummer = 7100
by = null

så skulle den gerne returnere alle lejligheder i 7100 postnummeret, men den skal også være istand til virke med dette.

adresse = nygade
postnummer = null
by = københavn

altså hvordan styre jeg lige det med at nogle af værdierne kunne være tomme.
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 08:53 #1
Du skal erklære parametrene som defaultværdier null og så eksplicit i stored procedure tage hensyn til de kombinationer, der kan være.
Avatar billede gulbaek Nybegynder
13. marts 2003 - 09:24 #2
Lige nu ser min stored procedure således ud

CREATE PROCEDURE sp_VBJ_FindLejligheder
@Postnummer  int
AS
    SELECT * FROM Lejlighed WHERE Postnummer = @Postnummer
GO


Men jeg skal have nogle flere værdier ind.
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 09:30 #3
CREATE PROCEDURE sp_VBJ_FindLejligheder
(
  @Postnummer  int =null,
  @By nvarchar(50) = null,
)
AS
    set nocount off
    if @Postnummer is not null begin
        set nocount on
        SELECT * FROM Lejlighed WHERE Postnummer = @Postnummer
    end else if @By is not null begin
        set nocount on
        select * from Lejligjhed where By = @By
    end
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 09:31 #4
Korrigeret efter SQL Server Syntax tjek :-/

CREATE PROCEDURE sp_VBJ_FindLejligheder
(
  @Postnummer  int =null,
  @By nvarchar(50) = null
)
AS
    set nocount off
    if @Postnummer is not null begin
        set nocount on
        SELECT * FROM Lejlighed WHERE Postnummer = @Postnummer
    end else if @By is not null begin
        set nocount on
        select * from Lejligjhed where [By] = @By
    end
Avatar billede gulbaek Nybegynder
13. marts 2003 - 09:40 #5
kan den der godt klare hvis,

postnummer = 7100
by = vejle

og hvad ville der ske hvis den var

postnummer = 7100
by = københavn
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 09:41 #6
Hvis postnummer er udfyldt, ignoreres by.
Avatar billede gulbaek Nybegynder
13. marts 2003 - 09:44 #7
oki, smart nok

og hvis jeg skal have adresse med, hvordan klare jeg det så lige ?
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 09:45 #8
I princippet på samme måde. Du skal dog beslutte hvilke kombinationer, der er gyldige. Men jo flere, der kommer med, jo mere kodning i proceduren
Avatar billede gulbaek Nybegynder
13. marts 2003 - 10:32 #9
hmnm, det kan jo nemt ende med at blive noget frygtelig indviklet kode.
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 10:33 #10
Ja, men du får bedre performance på det end ved at lave en lang indviklet Where-betingelse, der skal tage højde for de samme kombinationer.
Avatar billede bennytordrup Nybegynder
13. marts 2003 - 10:34 #11
Bortset fra det - lad være med at navngive dine stored procedures med sp_

Hvis du gør, vil SQL Server gå i master databasen for at lede efter den. sp_ er præfix for SQL Server system stored procedures.
Avatar billede gulbaek Nybegynder
13. marts 2003 - 10:44 #12
oki, takker for hjælpen
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