我正在尝试修改一个存储过程,我必须包含一个输入参数@OrderBy
。
但我需要测试一下,看它的NULL是否在ORDER BY
SQL
SELECT
如果它为NOT null,那么我想在@OrderBy
这可能吗?
提前致谢
答案 0 :(得分:6)
您可以使用动态SQL
来完成此任务Declare @dynamicSQL nvarchar(5000);
Declare @orderBy nvarchar(50);
Set @orderBy = 'column1';
Set @dynamicSQL = 'Select * from Table ';
If (@orderBy IS NOT NULL) BEGIN
@dynamicSQL = @dynamicSQL + 'Order BY ' + @orderBy;
END
exec @dynamicSQL;
答案 1 :(得分:0)
这样做的唯一方法就像你纯粹说的那样是使用动态SQL,但CASE语句通常也能正常工作:
SELECT *
FROM foo f
ORDER BY CASE WHEN @OrderBy IS NULL THEN f.Whatever ELSE '' END