我有一个存储在字符串变量中的条件表达式,
例如 :
declare @x int=501,@y int=0,@str varchar(max)
set @str='if @x > 500 set @y=1000 else set @y=500'
谁能告诉我如何计算这个字符串并SQL Server 2008
从存储过程中获取结果。
提前致谢
标清
我有一个存储在字符串变量中的条件表达式,
例如 :
declare @x int=501,@y int=0,@str varchar(max)
set @str='if @x > 500 set @y=1000 else set @y=500'
谁能告诉我如何计算这个字符串并SQL Server 2008
从存储过程中获取结果。
提前致谢
标清
您需要 sp_executesql,但它有一些细微差别,尤其是在传入变量和获取值方面。
declare @x int=501,@y int=0,@str Nvarchar(max)
set @str='if @x > 500 set @y=1000 else set @y=500'
exec sp_executesql @str, N'@x int, @y int output', @x, @y output
select @y
-- result
1000
请注意,@str 已被重新定义为 NVARCHAR。sp_executesql 要求查询为 NVARCHAR。
第二要注意的是,对于需要在调用output
中保持值更改的任何变量,该子句必须使用两次sp_executesql