看你知道不知道之-Call转义序列

今天在整理代码的时候,需要修改一个函数,使这个函数可以通过ADO的Command对象的CommandText的文本内容来判断,对象是否已经加载成功

,以避免重复的参数加载。

这个函数需要通过CommandText的字符串比较来判断,但是在测试的时候,发现了一个有趣的问题如果在调用存储过程的时候,CommandText并

不听话,而是返回类似于{? = CALL procname (?,?)},格式的内容,这到底是什么呢?

查找MSDN得到如下内容:

当 SQL 语句使用 ODBC CALL 转义子句调用存储过程时,Microsoft® SQL Server™ 驱动程序会使用远程存储过程调用 (RPC) 机制将此过程发

送给 SQL Server。RPC 请求回避 SQL Server 中的许多语句分析和参数处理,因此比使用 Transact-SQL EXECUTE 语句的速度要快。

构造一个使用 ODBC CALL 转义序列的 SQL 语句。该语句对每个输入、输入/输出和输出参数使用参数标记,对过程使用返回值(若有):
{? = CALL procname (?,?)}

原来利用Command调用存储过程当中,自动进行了转义,因此,不要通过CommandText的内容来做逻辑判

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值