SQL提高旅程1->动态SQL exec的替代者Sp_ExecuteSql
Sp_ExecuteSql最适合执行动态Sql,如果还在用exec关键字执行动态sql,请抛弃他吧,试着使用Sp_ExecuteSql,会让你大吃一惊。
Sp_ExecuteSql 是以参数化的形式执行动态Sql,并且支持输出和输入参数,由于是以参数化的形式执行动态SQL,更易使查询优化器进行复用,因此效率更高。
由于sp_ExecuteSql支持输出参数,所以Sp_ExecuteSql 可以执行动态SQL并且设置返回 值,当你为exec不能为外部变量,设置返回值烦恼时,Sp_ExecuteSql可以为你做这一切.
declare @userID int,@userName nvarchar(50)
exec sp_executeSql N'select @userID = UserID from users where username = @UserName'
,N'@userID int out,@userName nvarchar(20)'
,@userID output,@userName = 'oop'
Select @userID
exec sp_executeSql N'select @userID = UserID from users where username = @UserName'
,N'@userID int out,@userName nvarchar(20)'
,@userID output,@userName = 'oop'
Select @userID
如下的文章介绍的非常好。
http://technet.microsoft.com/zh-cn/library/ms188001.aspx