Avatar billede linebille Nybegynder
18. marts 2004 - 10:42 Der er 2 kommentarer og
1 løsning

hvordan order by et inputparameter i en procedure?

jeg har en procedure som selecter nogen rækker.
Jeg vil ha rækkerne sorteret på 4 forskellige kollonnenavne i forskellige situationer. Derfor vil jeg gi proceduren et inputparameter at sortere efter. Men order by skal jo have et kolonnenavn. så jeg skal ha sat den inputparameter til et kolonne navn, afhængig af hvad det er. Det må jo være simpelt men jeg kan ikke finde ud af syntaxen.

proceduren ser sådan ud:


CREATE PROCEDURE getBugs2 @ProjectID integer, @sortBy integer
AS
SELECT  tblBugs.BugID,
    tblBugs.BugReportDate,
    tblBugTypes.BugTypeDescription,
    tblBugs.BugDescription,
    BugDescReply = case when BugDescReply is Null Then '' Else BugDescReply End ,
    tblCustomers.CustomerFirstName,
    tblCustomers.CustomerLastName,
    tblCustomers.CustomerEmail1,
    tblDepartments.DepartmentName,
    tblCompanies.CompanyName,
    CompanyWWW= case when CompanyWWW is Null Then '' Else CompanyWWW End ,
    tblBugStatus.BugStatusDescription,
    tblBugHandlers.BugHandlerFirstName,
    tblBugHandlers.BugHandlerLastName,
    tblBugHandlers.BugHandlerEmail
FROM    tblBugs,
    tblBugTypes,
    tblCustomers,
    tblDepartments,
    tblCompanies,
    tblBugStatus,
    tblBugHandlers
WHERE    tblBugs.ProjectID=@ProjectID
    AND tblBugs.BugTypeID=tblBugTypes.BugTypeID
    AND tblBugs.CustomerID=tblCustomers.CustomerID
    AND tblCustomers.DepartmentID=tblDepartments.DepartmentID
    AND tblDepartments.CompanyID=tblCompanies.CompanyID
    AND tblBugs.BugStatusID=tblBugStatus.BugStatusID
    AND tblBugs.BugHandlerID=tblBugHandlers.BugHandlerID

ORDER BY @sortBy DESC
Avatar billede trer Nybegynder
18. marts 2004 - 10:47 #1
Umiddelbart kan du ikke gøre det. Eneste løsning er enten at lave 4 udtryk og vælge mellem dem på en IF - eller at lave flere forskellige stored procedures. det sidste giver bedst performance.

I øvrigt
CompanyWWW= case when CompanyWWW is Null Then '' Else CompanyWWW End ,

kan med fordel ændres til

isnull(companywww,'') as companywwww

det burde performe lidt bedre.
Avatar billede linebille Nybegynder
18. marts 2004 - 11:01 #2
ja - men den if den kan jeg ikke finde ud af syntaxen på. jeg vil helst undgå at lave 4 forskellige.
Avatar billede linebille Nybegynder
18. marts 2004 - 11:03 #3
den med isnull - tak for den :-)
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