SQL动态执行存储SQL语句

在一个存储过程里面,我们想更加灵活的执行SQL语句,而且提高效率的时候,在存储过程动态的执行SQL语句,如下所示:

代码如下所示:

declare @COT int 
declare @tables varchar(50)
set @tables='SELECT @COTT=count(*) FROM Book'
exec sp_executesql @tables, '@COTT INT OUT',@COT out
print @COT

错误1: 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

解决办法在声明的变量下面加N

declare @COT int 
declare @tables nvarchar(50)
set @tables=N'SELECT @COTT=count(*) FROM Book'
exec sp_executesql @tables, N'@COTT INT OUT',@COT out
print @COT

这样就可以了



set @tables='SELECT @COTT=count(*) FROM Book'  

exec sp_executesql @tables, '@COTT INT OUT',@COT out

不要不分就放在这两个语句下面

我们执行sp_executesql 的时候需要传入参数,也可以不需要传入参数。当我们需要传入参数的时候我们在exec sp_executesql 写传入参数的类型。OUT是传入禁区被复制,然后可以输出。同样这样只是定义了,后面还接一个参数,这个参数表示传入进去的值。这个值最后可以被输出print.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值