sp_executesql和exec的区别

******************   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:两者最大的区别是嵌入式的参数




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值