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,@accountprint @value--测试 输出 

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

exec sp_executesql @sql,N'@value nvarchar(100) out,@company nvarchar(100),@account nvarchar(100)',@value out,@company,@account

转载于:https://www.cnblogs.com/PEPE/p/4303218.html

exec vs sp_executesql相关推荐

  1. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 原文:SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语 ...

  2. exec和sp_executesql

    sqlserver中的exec和sp_executesql都能执行动态的sql语句和存储过程,但exec用法较为简单,不能带参数,也没有返回参数. sp_executesql则显得功能更加完善,可以用 ...

  3. EXEC和sp_executesql的区别

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...

  4. sqlserver 中EXEC和sp_executesql使用介绍

    sqlserver 中EXEC和sp_executesql使用介绍 MSSQL为我们提供了两种动态运行SQL语句的命令,各自是EXEC和sp_executesql;通常,sp_executesql则更 ...

  5. EXEC与sp_executesql的区别及应用

    execute,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的,如: exec sp_ex ...

  6. SQL SERVER EXEC 、SP_EXECUTESQL

    EXEC Exec 命令有两种用法 1.执行存储过程 2.执行动态的批处理 exec 存储过程 @参数 = 值 --或 exec 存储过程 值 exec 存储过程 存储过程中的参数=参数{接受参数返回 ...

  7. SQL Server 中 EXEC全称execute 与 SP_EXECUTESQL动态执行sql代码语句 的区别

    先睹为快 use cplvfx_DBdeclare @sqlStr nvarchar(max)set @sqlStr='select top 100 * from User'exec (@sqlStr ...

  8. sqlserver 动态sql执行execute和sp_executesql

    sqlserver 动态sql的执行,有两个方法execute和 sp_executesql.其中第一个方法execute可以简写为exec. execute方法适合执行没有返回值的动态sql,sp_ ...

  9. java生成sql语句_java生成SQL语句

    代码如下: /** * 动态生成SQ及SQL参数L * @param ve 接收到的消息的CHGLIST * @param paramList MQ消息中的SQL参数 * @param t 泛型对象 ...

最新文章

  1. 11: facebook原生登录
  2. Only the original thread that created a view hierarchy can touch its views.
  3. java.net.uri,java.net.uri
  4. 1494: 连续子串和续
  5. Linux 基础命令上
  6. 【pyqt5学习】——groupBox显示matplotlib图像
  7. dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
  8. 浏览器访问网页的详细内部过程
  9. 浅拷贝 python_python中的浅拷贝和深拷贝
  10. Linux服务器运行环境搭建(四)——Tomcat安装
  11. 【译】30 分钟入门 Typescript
  12. HTML-W3school首页制作
  13. 复变函数总结一:复变函数
  14. 惠普电脑u盘重装系统步骤_惠普电脑如何重装系统?惠普电脑用U盘重装win10系统教程...
  15. vite中antdesign-vue3的使用
  16. 计算机网络出行711,出现网络连接711五种解决方法详解
  17. ECUG Con 2018 早鸟票热卖中 | 大咖聚首 探索云计算下一个十年
  18. java实习第一周周报,大学生实习周报
  19. hp服务器系统安装xp糸统,惠普笔记本怎么安装XPghost版系统教程
  20. 双离合档把上按钮作用_自动挡挂档要按按钮吗 主要为了防止挡误操作

热门文章

  1. im4java开发向导
  2. flutter tab选项卡appbar下的选项卡
  3. ES6学习(新增字符串方法)
  4. jenkins 备份配置信息
  5. Mybatis 一对多 简单映射配置
  6. nginx开发笔记_ngx_hash源码解析
  7. 2017.6.27 跟开涛学spring3--spring概述
  8. iOS 使点击事件穿透透明的UIView
  9. 基于spring-redis发布订阅模式的实现
  10. [软件测试_LAB1]安装junit和hamcrest及其使用