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,@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相关推荐
- SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 原文:SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语 ...
- exec和sp_executesql
sqlserver中的exec和sp_executesql都能执行动态的sql语句和存储过程,但exec用法较为简单,不能带参数,也没有返回参数. sp_executesql则显得功能更加完善,可以用 ...
- EXEC和sp_executesql的区别
MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...
- sqlserver 中EXEC和sp_executesql使用介绍
sqlserver 中EXEC和sp_executesql使用介绍 MSSQL为我们提供了两种动态运行SQL语句的命令,各自是EXEC和sp_executesql;通常,sp_executesql则更 ...
- EXEC与sp_executesql的区别及应用
execute,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的,如: exec sp_ex ...
- SQL SERVER EXEC 、SP_EXECUTESQL
EXEC Exec 命令有两种用法 1.执行存储过程 2.执行动态的批处理 exec 存储过程 @参数 = 值 --或 exec 存储过程 值 exec 存储过程 存储过程中的参数=参数{接受参数返回 ...
- SQL Server 中 EXEC全称execute 与 SP_EXECUTESQL动态执行sql代码语句 的区别
先睹为快 use cplvfx_DBdeclare @sqlStr nvarchar(max)set @sqlStr='select top 100 * from User'exec (@sqlStr ...
- sqlserver 动态sql执行execute和sp_executesql
sqlserver 动态sql的执行,有两个方法execute和 sp_executesql.其中第一个方法execute可以简写为exec. execute方法适合执行没有返回值的动态sql,sp_ ...
- java生成sql语句_java生成SQL语句
代码如下: /** * 动态生成SQ及SQL参数L * @param ve 接收到的消息的CHGLIST * @param paramList MQ消息中的SQL参数 * @param t 泛型对象 ...
最新文章
- 11: facebook原生登录
- Only the original thread that created a view hierarchy can touch its views.
- java.net.uri,java.net.uri
- 1494: 连续子串和续
- Linux 基础命令上
- 【pyqt5学习】——groupBox显示matplotlib图像
- dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
- 浏览器访问网页的详细内部过程
- 浅拷贝 python_python中的浅拷贝和深拷贝
- Linux服务器运行环境搭建(四)——Tomcat安装
- 【译】30 分钟入门 Typescript
- HTML-W3school首页制作
- 复变函数总结一:复变函数
- 惠普电脑u盘重装系统步骤_惠普电脑如何重装系统?惠普电脑用U盘重装win10系统教程...
- vite中antdesign-vue3的使用
- 计算机网络出行711,出现网络连接711五种解决方法详解
- ECUG Con 2018 早鸟票热卖中 | 大咖聚首 探索云计算下一个十年
- java实习第一周周报,大学生实习周报
- hp服务器系统安装xp糸统,惠普笔记本怎么安装XPghost版系统教程
- 双离合档把上按钮作用_自动挡挂档要按按钮吗 主要为了防止挡误操作