Voici ce que j'essaie d'accomplir. J'ai une procédure qui reçoit employeeIds comme arguments facultatifs et les stocke dans une table temporaire (temp_table) comme ceci
empId ------- 3432 3255 5235 2434
Maintenant, j'ai besoin de courir en dessous de la requête dans 2 conditions:
1ère condition : si l'argument n'est pas vide alors ma requête devrait être …
SELECT * FROM DEPARTMENTS INNER JOIN temp_table ON emp_no = empId
2ème condition : si l'argument est vide, il prendra toutes les lignes de la table department
SELECT * FROM DEPARTMENTS
Une option que je peux utiliser est:
IF (@args <> '') BEGIN SELECT * FROM DEPARTMENTS INNER JOIN temp_table ON emp_no = empId END ELSE BEGIN SELECT * FROM DEPARTMENTS END
Mais je cherche une meilleure option où je n'ai pas besoin d'écrire presque la même requête deux fois. S'il vous plaît aider.
Je recommand de restr fidèle à ce que vous faites déjà.
C'est la manière la plus propre et la plus sûre de la performance.
Essaye celui-là
SELECT * FROM DEPARTMENTS WHERE ( @args <> '' OR EXISTS (SELECT 1 FROM temp_table WHERE emp_no = empId) )