sp_executesql和exec的区别

来源:互联网 发布:怎样打开Windows目录 编辑:程序博客网 时间:2024/05/16 15:30
******************   EXEC的用法   **********************

declare @sqlStr varchar(4000)

set @sqlStr = 'xxxxx'

exec @sqlStr          -- 执行存储过程

exec (@sqlStr)        -- 执行sql语句

******************   sp_executesql的用法   *********************

sql2005中引入的新的系统存储过程,用来处理动态sql

exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out ,@id 

@sql   拼成的动态sql 
N'@count int out,@id varchar(20)'    拼成的动态sql内的参数列表 
@cou out,@id    为动态sql内参数列表提供值的外部参数列表 

******************   EXEC 与 sp_executesql的比较   *********************

declare @sqlStr varchar(4000)
declare @sWhere nvarchar(4000)
declare @resultNum int = 0 output

set @sqlStr = 'select @resultNum = count(*) from Table1' + @sWhere       --变量应在字符串外,如 @sWhere

exec (@sqlStr)                                                           --字符串内的变量 @resultNum 将导致异常

exec sp_executesql @sqlStr,N'@resultNum int OUTPUT',@resultNum OUTPUT    --正常执行

ps:两者最大的区别是嵌入式的参数




原创粉丝点击