看你知道不知道之-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的内容来做逻辑判

原文地址:https://www.cnblogs.com/Duiker/p/330375.html