07. maj 2003 - 05:52Der er
1 kommentar og 2 løsninger
Dynamiske stored procedure
Jeg skal have opbygget en stored procedure. Da den skal indgå i en søgefunktion, skal den kunne modtage 0 til 4 forskellige krav til sql-udtrykket. Herved skal sql'en køres med et dynamisk antal WHERE-kald.
Hvis der ikke er angivet nogle kriterier: SELECT Navne FROM Tabel
Hvis @Kol_1 indeholder data: SELECT Navne FROM Tabel WHERE Kolonne1 = @Kol_1
Hvis @Kol_2 og @Kol_4 indeholder data: SELECT Navne FROM Tabel WHERE Kolonne1 = @Kol_1 AND Kolonne4 = @Kol_4
Osv...
Hvordan gøres dette mere smart end at oprette masser af stored procedures?
Det er ikke nødvendigvis særlig effektivt SQL, men dette burde virke:
SELECT Navne FROM Tabel WHERE (@Kol_1 IS NULL OR @Kol_1 IS NOT NULL AND Kolonne1 = @Kol_1) AND (@Kol_2 IS NULL OR @Kol_2 IS NOT NULL AND Kolonne2 = @Kol_2) AND (@Kol_3 IS NULL OR @Kol_3 IS NOT NULL AND Kolonne3 = @Kol_3) AND (@Kol_4 IS NULL OR @Kol_4 IS NOT NULL AND Kolonne4 = @Kol_4)
Undgå at lave dynamiske sp's, det kræver meget længere compiletime end bare traditionel SQL!
Den slags simple forespørgsler som du vil lave der, er meget nemmere og mere performance venligt hvis det bygges op i dit logiske lag... ASP/ PHP eller hvad det er :O)
Som KonFutse sagde, der er ingen grund til at skyde myg med kanoner ;O)
Synes godt om
Ny brugerNybegynder
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.