2

我有一个存储在字符串变量中的条件表达式,

例如 :

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从存储过程中获取结果。

提前致谢

标清

4

2 回答 2

1

您需要 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

于 2012-09-28T08:54:35.467 回答
-1

您需要使用sp_executesql来使用动态 SQL

使用 sp_executesql

[虽然,我会检查你为什么需要这样做......]

于 2012-09-28T08:36:00.033 回答