zoukankan      html  css  js  c++  java
  • exec vs sp_executesql

    1、exec  vs  sp_executesql

      1.1 说到exec了解SQLServer的朋友第一反应应该是它用来执行存储过程,对的这是其一,另一个作用是执行一个动态批处理。总结下:a、执行一个存储过程 b、执行一条sql语句。

          1.2 sp_executesql

          SQL Server 2008 R2 联机丛书:执行可以多次重复使用或动态生成的 Transact-SQL 语句或批处理。Transact-SQL 语句或批处理可以包含嵌入参数。

    2、二者比较

      2.1、sp_executesql 支持替换 Transact-SQL 字符串中指定的任何参数值,但 EXECUTE 语句不支持。因此,由 sp_executesql 生成的 Transact-SQL 字符串比那些由 EXECUTE 语句生成的字符串更加相似。SQL Server 查询优化器可能将 sp_executesql 的 Transact-SQL 语句与以前所执行的语句的执行计划相匹配,从而节省编译新的执行计划的开销。

      2.2、使用 EXECUTE 语句,所有参数值都必须转换为字符或 Unicode,并成为 Transact-SQL 字符串的一部分。

      2.3、sp_executesql 可以单独使用 Transact-SQL 字符串来设置参数值

         

    3、举个例子

        DECLARE @sql nvarchar(1000),--sql语句
        @value nvarchar(100),--sql返回值
        @company nvarchar(100),--公司名
        @account nvarchar(100) --登陆人
        SET @value=''
        SET @sql = 'SELECT @value=ID FROM RDPInfos WHERE Useable=1 and ConnectCompanyName=@company and ConnectUserName=@account'
        exec sp_executesql @sql,N'@value nvarchar(100) out,@company nvarchar(100),@account nvarchar(100)',@value out,@company,@account
        print @value--测试 输出 

    说明:动态Sql的参数列表与外部提供值的参数列表顺序必需一致,如:

    exec sp_executesql @sql,N'@value nvarchar(100) out,@company nvarchar(100),@account nvarchar(100)',@value out,@company,@account
  • 相关阅读:
    技术选型总结
    这些年来收集的好用的好玩的软件,强烈推荐给大家
    如何解决markdown中图片上传的问题
    01.如何把.py文件打包成为exe,重点讲解pyinstaller的用法
    Asp.net中汉字转换成为拼音
    程序员常用网址收集
    通过IP来判断所在城市
    以太坊
    分布式系统领域经典论文翻译集
    T50
  • 原文地址:https://www.cnblogs.com/PEPE/p/4303218.html
Copyright © 2011-2022 走看看