日期:2014-05-18  浏览次数:20679 次

EXEC输出调用外部变量要怎么办呢?
SQL code

--例子
declare @a nvarchar(100),@b int;
set @b=20;
set @a='@b-2';
exec(@a)
/*
这样的输出提示没有申明变量
Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@b".
这样怎么把字符串里面的变量@b调用外部的值呢?
*/



------解决方案--------------------
sp_executesql
下面的示例创建并执行一个简单的 SELECT 语句,其中包含名为 @level 的嵌入参数。
execute sp_executesql 
N'select * from pubs.dbo.employee where job_lvl = @level',
N'@level tinyint',
@level = 35


------解决方案--------------------
SQL code

declare @a int,@b int, @GSResule nvarchare(1000)
set @a=3,
set @b=4,
select @GSResule='select gs from test where gs > @a and gs< @b' 
exec sp_executesql @GSResule, N'@a int,@b int',@a,@b