Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Can I Do Dynamic Query Construction in SQL Server SP
Message
 
 
À
14/10/2009 15:36:35
Bill Drew
Independent Consultant
Chicago, Illinois, États-Unis
Information générale
Forum:
Visual FoxPro
Catégorie:
Client/serveur
Divers
Thread ID:
01428769
Message ID:
01429415
Vues:
31
>Thanks so much for the link.
>
>It was exactly what I needed.
>If anyone else needs a way to do dynamic queries, here is what I came up with.
>
>
>ALTER PROCEDURE [dbo].[sp_test2]
>(
>@LastSearch VARCHAR(50) = NULL,
>@FirstSearch VARCHAR (50) = NULL,
>@CASEID VARCHAR (10) = NULL,
>@OFFREF VARCHAR (23) = NULL,
>@MONTHDOB INT = NULL,
>@DAYDOB INT = NULL,
>@YEARDOB INT = NULL
>)
>AS
>      IF @CASEID IS NOT NULL
>            BEGIN
>                  SELECT PATIENTDOB,* FROM case4 WHERE (LCASEID LIKE (@CASEID+'%'))
>            END
>      ELSE
>            IF @OFFREF IS NOT NULL
>                  BEGIN
>                        SELECT * FROM case4 WHERE (OFFICIALREF LIKE (@OFFREF+'%'))
>                  END
>            ELSE
>                  BEGIN
>                        SELECT * FROM case4 WHERE
>                              (patientlast LIKE ISNULL(@LastSearch,PATIENTLAST)+'%') AND 
>                              (patientfirst LIKE ISNULL(@FirstSearch,PATIENTFirst)+'%' ) AND 
>                              (MONTH(PATIENTDOB) = ISNULL(@MONTHDOB,MONTH(PATIENTDOB))) AND
>                              (DAY(PATIENTDOB) = ISNULL(@DAYDOB,DAY(PATIENTDOB))) AND
>                              (YEAR(PATIENTDOB) = ISNULL(@YEARDOB,YEAR(PATIENTDOB)))
>                  end
>
Bill,

If you have NULLs in any of your fields this query will return different result than
                        SELECT * FROM case4 WHERE
                              (@LastSearch IS NULL OR patientlast LIKE @LastSearch+'%') AND
etc.
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform