我有三个不同的SQL查询,我想在单个存储过程中转换它。 根据传递参数,我们可以得到第一,第二或第三的输出。
第一次查询:
SELECT NAME, ADDRESS, CITY FROM LOCATION WHERE REGION <> 3
第二次查询:
SELECT NAME, ADDRESS, CITY FROM LOCATION WHERE REGION = 3
第三次查询:
SELECT NAME, OFFICE_ADDRESS, RES_ADDRESS,PROPERTY_TAX FROM COUNTRY WHERE REGION = 'ZUR'
愿任何人帮助我如何实现这一目标。
非常感谢
答案 0 :(得分:0)
对于前两个选择,有必要制作IF
语句。但不是最后因为字段数不同。
即使LOCATION
和COUNTRY
上的大多数列具有相同的含义,也会增加维护问题并增加代码的复杂性。
为了同样的目的,使用多个表也是设计不良的症状。
IF (@FLAG = 1)
BEGIN
SELECT NAME, ADDRESS, CITY FROM LOCATION WHERE REGION != 3
END
ELSE
BEGIN
SELECT NAME, ADDRESS, CITY FROM LOCATION WHERE REGION = 3
END
创建另一个方法/ SP来获取COUNTRY
注意:对于最后一个MS SQL Server版本,IF
是提高性能的推荐方法。同样使用CASE
语句可能意味着需要为表中的每一行评估REGION
列。
注意:了解参数嗅探以避免它。弄乱SP行为的条件是获取参数嗅探问题的好方法。