Disons que nous avons une procédure stockée qui utilise un paramètre qui est @IsAllowed
valeur booléenne et dans le cas où il est passé True
je sélectionner des données de deux tables A,B
(je vais utiliser dans mon cas Union ALL
) Sinon il est passé False
je sélectionner les données d'un Table A
... Je l'écris, il int comme suit:Comment choisir Union ALL en fonction du paramètre transmis (besoin d'optimisation)?
Create PROCEDURE TestSP
(
@IsAllowed bit
)
AS
IF @IsAllowed = 1
BEGIN
Select ID, Username From A
Union ALL
Select ID, Username From B
END
ELSE
Select ID, Username From A
Est-ce la meilleure façon de le faire? bien que dans mon cas réel SP ai environ 9 paramètre utilisé dans où condition de première requête, cela signifie que je vais écrire la première requête deux fois et tout changement je dois prendre soin d'avoir la même copie dans les 2 différents endroits
Est-ce que 'B' est un sous-ensemble de' A'? Ou deux ensembles de résultats distincts d'une seule table? – Brad
Quelle version de SQL? – Brad
A est un tableau qui diffère de la structure de la table B, mais il a des colonnes que je veux retourner ... j'utilise sql server 2005 –