我需要编写一个接受变量的存储过程(实际上,其中有几个,但会为此目的对其进行简化),然后构建一个基于该变量进行过滤的 SQL 语句。但是,用户是否传递该变量是可选的。如果用户没有传递变量,过滤器必须忽略该部分,而不是返回 Null 值。
基本上,我得到的是:
@VariableA varchar(50)
@SQL nvarchar(max)
Select @SQL = 'Select ColumnX from TableY where (('+@VariableA+ ' = somevalue) or (@VariableA is null))'
exec sp_executesql @SQL
所以,我的问题是当@SQL 字符串作为查询执行时,@VariableA 变量超出范围。如果用户不通过它,我如何编写动态 SQL 查询来运行,同时检查变量是否为空值?