Avatar billede simsen Mester
13. marts 2008 - 13:29 Der er 1 kommentar og
1 løsning

Mulighed for at parameter ikke har en værdi i stored procedure

Hej,

Jeg har 2 parametre der kommer ind i systemet (er igang med at søge igennem en tabel). Nu ved jeg ikke altid om der er noget i én af parametrene, i begge eller i ingen af dem, hvordan håndterer jeg dette?

Min kode:

ALTER PROCEDURE [dbo].[GetCompanySearch]
    @SearchString AS NVARCHAR(200) = '',
    @companyCategory AS NVARCHAR(200) = ''

AS
BEGIN
    SELECT  tCompany.fCompanyPId, tCompany.fCompanyName, tDimDetail_1.fDimDetailText AS CompanyCategory
      FROM  tDimDetail AS tDimDetail_2 INNER JOIN
            tDimZipCodes ON tDimDetail_2.fDimDetailPId = tDimZipCodes.fDimDetailFId
            RIGHT OUTER JOIN tCompany INNER JOIN
            tDimDetail ON tCompany.fDimDetailCustomF1Id = tDimDetail.fDimDetailPId
            INNER JOIN tDimDetail AS tDimDetail_1 ON tCompany.fDimDetailCustomF2Id =
            tDimDetail_1.fDimDetailPId INNER JOIN tContact ON
            tCompany.fDimDetailCustomF4Id = tContact.fContactPId ON
            tDimZipCodes.fZipCodePId = tCompany.fZipCodeFId

WHERE ((CAST(fCompanyPId AS VARCHAR(200)) LIKE '%' + @SearchString + '%') OR (fCompanyName LIKE '%' + @SearchString + '%')) AND
(tDimDetail_1.fDimDetailText = @companyCategory)
END

Altså det jeg vil, er hvis der i parameteren @SearchString ikke kommer noget med ind (''), skal den ignorere de første to dele i min WHERE statement og kun tage sig af den 3. (sidste del). Hvis der i parameteren @companyCategory skal den ignorere den 3. (sidste del)

Som I kan se har jeg forsøgt mig med at sætte en default på (har forsøgt både med null og med '') Men jeg får ingen rækker ud, hvis jeg kun sætter noget i f.eks. @SearchString. Den skulle ellers give mig utallige rækker ud

mvh
simsen :-)
Avatar billede simsen Mester
13. marts 2008 - 15:24 #1
Har fundet en løsning - der dog giver mig et andet problem, hvor jeg åbner et nyt spørgsmål - løsningen var at bruge COALESCE
Avatar billede mungojerrie Nybegynder
26. marts 2008 - 22:37 #2
du kan også skrive IsNull(@parameter_som_kan_vaere_tom,'')
så bliver din parameter lig med en tom streng (''), hvis den er null
du kan angive at den må være null i headeren af din stored procedure....
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