sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的,

如: exec sp_executesql @sql, N'@item_name nvarchar(100) out,@id nvarchar(20)',   @item_name out,@id

参数说明:

@sql为拼成的动态sql

N'@item_name nvarchar(100) out,@id nvarchar(20)' 为拼成的动态sql内的参数列表

@name out,@id 为动态sql内参数列表提供值的外部参数列表

执行动态SQL时,Exec与 sp_executesql 之间的区别:

1、它们之间最大的区别是嵌入式的参数,如下面一个语句

declare @sql nvarchar(2000)

declare @id varchar(20)

set @id='888' set @sql='select item_name from t_item where id=' + @id

exec @sql

想把得到的item_name传出来,用传统的exec是不好办到的,

但是用sp_executesql则很容易就办到了:

declare @sql nvarchar(2000)

declare @item_name nvarchar(100)

declare @id nvarchar(20)

set @id='888'

set @sql='select @item_name=item_name  from t_item where id=@id'

exec sp_executesql

@sql,

N'@item_name nvarchar(100) out,@id nvarchar(20)',

@item_name out,@id

2、性能  可以看到,如果用exec,由于每次传入的@id不一样,所以每次生成的@sql就不一样,这样每执行一次Sql2005就必须重新将要执行的动态Sql重新编译一次,  但是sp_executesql则不一样,由于将数值参数化,要执行的动态Sql永远不会变化,只是传入的参数的值在变化,那每次执行的时候就不用重新编译,更节约时间!

另外,特别要注意的是:

1、sp_executesql要求动态Sql和动态Sql参数列表必须是Nvarchar

2、动态Sql的参数列表与外部提供值的参数列表顺序必需一致,

如: N'@item_name nvarchar(100) out,@id nvarchar(20)', @item_name out,@id

@item_name 对应@item_name ,@id对应@id

如果不一致,必须显式标明,

如: N'@item_name nvarchar(100) out,@id nvarchar(20)', @id=@id, @item_name =@item_name out

3、动态SQl的参数列表与外部提供参数的参数列表中的参数名可以同名。

动态SQL语句之sp_executesql的使用的更多相关文章

  1. 动态sql语句基本语法--Exec与Exec sp_executesql 的区别

    http://www.cnblogs.com/goody9807/archive/2010/10/19/1855697.html 动态sql语句基本语法 1   :普通SQL语句可以用Exec执行   ...

  2. 用sp_executesql执行动态SQL语句及获得返回值

    过去我执行拼凑出来的动态SQL语句,都直接使用EXEC @sql 的方式.有好几次,都看到有资料说,应该尽量使用 sp_executesql. 究其原因,是因为仅仅参数不同的情况下,sp_execut ...

  3. IBatis.net动态SQL语句

    在学习动态SQL语句之前,首先必须对条件查询有一定了解,先来学习如何向IBatis.Net的映射文件里传入参数. 一.条件查询 1.传递单个参数 如根据Id查询: <select id=&quo ...

  4. 存储过程中执行动态Sql语句

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

  5. IBatis.net动态SQL语句(六)

    在学习动态SQL语句之前,首先必须对条件查询有一定了解,先来学习如何向IBatis.Net的映射文件里传入参数. 一.条件查询 1.传递单个参数 如根据Id查询: <select id=&quo ...

  6. [SQL]动态sql语句基本语法

    动态sql语句基本语法 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_ex ...

  7. 动态sql语句

    当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句,个人觉得用得比较多的地方就是执行搜索查询的SQL语句.对于搜索,可能要根据搜索条件判断来动态执行SQL语句. 在S ...

  8. 处理动态SQL语句的参数

    原文:处理动态SQL语句的参数 经常对SQL进行开发,写动态的SQL语句,是少之不了的,但是在使用动态语句中,常是因为有动态的参数的出现.参考下面代码示例: 正因为有了标记1的动态条件代码,而让SQL ...

  9. MySQL基础----动态SQL语句

    尊重原创:http://blog.csdn.net/abc19900828/article/details/39501643   动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: ...

随机推荐

  1. union和union all 合并查询

    union联合查询 SELECT TOP ID,oTitle Title,oInfo Description,Pic Images AND UpTime > dateadd(day,-,UpTi ...

  2. Win10 UI介绍之Titlebar

    活动状态 非活动状态 var titleBar = ApplicationView.GetForCurrentView().TitleBar; titleBar.BackgroundColor = C ...

  3. 【leetcode】Evaluate Reverse Polish Notation

    Evaluate Reverse Polish Notation 题目描述: Evaluate the value of an arithmetic expression in Reverse Pol ...

  4. AutoMapper搬运工之配置

    回顾 前几篇搬运了AutoMapper的基本用法,自定义映射,相信有看的同学已经会使用AutoMapper这个强大的Mapping工具了.不过细心的你是否还记得前几篇中有提到Map的创建并非是每次都需 ...

  5. 后台拼接input 后,动态获取input的值

    //前台 <input id=" /> //后台 string text = request.form["text"].toString();

  6. SecureCRT 使用 rz 和 sz 命令

    1.下载软件 rzsz-3.34.tar.gz,登录linux,用命令 wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载. 2.解 ...

  7. RecyclerView item 状态错乱

    adapter中: private List<Integer> checkboxUserIdList = new ArrayList<>(); 在如下这个方法中: public ...

  8. T-SQL Recipes之生成动态列表数据

    Problem 首先什么是动态列表?举个示例,假设你想输出以逗号分隔的IDs,如: 1,45,67,199,298 Solution 生成动态列表数据在我们生活场景中很常见,比如在 Dynamic P ...

  9. Ext3日记文件系统为什么文件系统还会损坏?

    问题提出      在我们产品使用的多种文件系统中,ext3文件系统问题的一致性问题比较突出(这里的文件系统一致性问题特指文件系统元数据的一致性,下同).比如下面2例ext3文件系统损坏案例:     ...

  10. jquery扩展(- _ -//

    如何写一个Jquery 之前看了好多网上的例子,讲真,不知其所以然,生搬硬套.其实自己还是一脸的懵B,想想还真的有必要仔细研读一下书籍. 言归正传,正式巴拉巴拉笔记 扩展Jquery什么鬼??? 三个 ...