而不是
WHERE foo = 'one' and bar = 'two'
我想将其中的部分内容存储在一个变量中,以便轻松更改WHERE子句
DECLARE @var VARCHAR(50)
SET @var = "foo = 'one' and bar = 'two'"
...
...
WHERE @var
这种表示法不起作用,但我认为这表明我正在尝试做什么。有没有人有任何想法?
答案 0 :(得分:2)
如果你想构建动态where子句,你最好使用动态sql。
请查看以下文章:Dynamic SQL
这是一个简单的动态SQL代码示例:
这是一个使用动态SQL来确定要订购的内容的SP:
create procedure GetCustomers
@OrderByField nVarchar(50),
@OrderByDirection nVarchar(4)
as
begin
declare @strSQl nvarchar(200)
set @strSQL = 'Select firstname, lastname from customer order by ' + @OrderByField + ' ' + @OrderByDirection
exec sp_execute @strSQL
end
然后你可以运行它:
exec GetCustomers 'lastname','desc'
这将返回所有按姓氏desc
订购的客户答案 1 :(得分:0)
如果你想进入动态sql路由,试试这个:
declare @foo varchar(10)
,@bar varchar(10)
,@sql varchar(max)
select @foo = 'one'
,@bar = 'two'
SET @sql = '
SELECT
...
FROM myTable
WHERE foo = ''' + @foo + '''
AND bar = ''' + @bar + '''
'
EXEC (@SQL)