我有一个执行如下命令的 SQL Server 存储过程:
SELECT TOP(25)
col_charname, col_axexp
FROM
tbl_characters
WHERE
GETUTCDATE() < DATEADD(DAY, 30, col_lastlogin)
ORDER BY
col_axexp DESC
而且我想允许存储过程有选择地为WHERE
. 与参数的整数比较@par_vocation
。
SELECT TOP(25)
col_charname, col_axexp
FROM
tbl_characters
WHERE
GETUTCDATE() < DATEADD(DAY,30, col_lastlogin)
AND col_vocation = @par_vocation
ORDER BY
col_axexp DESC
但是,如果@par_vocation
是 null (或者我们可以使用一些任意的固定值),我想忽略额外的限制(我希望它像第一个语句一样起作用)。
我知道我可以使用 T-SQLIF
子句将两个语句放在同一个过程中,但是 SP 中已经有很多这样的语句,我担心这个存储过程会变得越来越大。
有没有办法使这项工作?