我使用存储过程的一些心得(一)

原创 2004年08月07日 11:39:00

  sp_executesql和execute都能动态执行字符串,但sp_executesql比execute更通用,它生成的执行计划更有可能比SQL SERVER重新使用
1、sp_executesql的语法(摘录于sql server 联机文档)
sp_executesql [@stmt =] stmt
[
    {, [@params =] N'@parameter_name  data_type [,...n]' }
    {, [@param1 =] 'value1' [,...n] }
]

参数
[@stmt =] stmt

包含 Transact-SQL 语句或批处理的 Unicode 字符串,stmt 必须是可以隐式转换为 ntext 的 Unicode 常量或变量。不允许使用更复杂的

Unicode 表达式(例如使用 + 运算符串联两个字符串)。不允许使用字符常量。如果指定常量,则必须使用 N 作为前缀。例如,Unicode 常

量 N'sp_who' 是有效的,但是字符常量 'sp_who' 则无效。字符串的大小仅受可用数据库服务器内存限制。

stmt 可以包含与变量名形式相同的参数,例如:

N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'

stmt 中包含的每个参数在 @params 参数定义列表和参数值列表中均必须有对应项。

[@params =] N'@parameter_name  data_type [,...n]'

字符串,其中包含已嵌入到 stmt 中的所有参数的定义。该字符串必须是可以隐式转换为 ntext 的 Unicode 常量或变量。每个参数定义均由

参数名和数据类型组成。n 是表明附加参数定义的占位符。stmt 中指定的每个参数都必须在 @params 中定义。如果 stmt 中的 Transact-SQL

语句或批处理不包含参数,则不需要 @params。该参数的默认值为 NULL。

[@param1 =] 'value1'

参数字符串中定义的第一个参数的值。该值可以是常量或变量。必须为 stmt 中包含的每个参数提供参数值。如果 stmt 中包含的

Transact-SQL 语句或批处理没有参数,则不需要值。

n 附加参数的值的占位符。这些值只能是常量或变量,而不能是更复杂的表达式,例如函数或使用运算符生成的表达式。

2、@stmt只能为 'ntext/nchar/nvarchar' 类型

3、保存sp_executesql执行结果的两种方式
  (1)   declare @TmpSelect    NVarchar(600)
 declare @num          int
 select @TmpSelect = 'set nocount on;select @SPintRootRecordCount = count(*) from tb_resinfo'
 exec sp_executesql
       @TmpSelect,
       N'@SPintRootRecordCount int output',@num output
 select @num

 (2)    declare @TmpSelect     NVarchar(600)
 declare @num           int
 select @TmpSelect = 'set nocount on;select @SPintRootRecordCount = count(*) from tb_resinfo'
 exec sp_executesql
       @TmpSelect,
       N'@SPintRootRecordCount int output',@num output
              @SPintRootRecordCount=@num output
 select @num

用SQL语句获得一个存储过程返回的表

定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all  select...
  • studyzy
  • studyzy
  • 2013年09月10日 14:19
  • 5540

蓝桥杯-Huffman树(VIP试题)

问题描述   Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下...
  • slightfeverGK
  • slightfeverGK
  • 2016年02月22日 19:33
  • 1258

java和ibatis调用存储过程并取得返回值

http://blog.csdn.net/jiandanfeng2/article/details/6609623 由于存储过程的一系列好处,比如减少sql语句的网络传输等等。使得很多开发人员喜欢...
  • it_taojingzhan
  • it_taojingzhan
  • 2016年04月25日 10:08
  • 3467

GridView自定义分页的四种存储过程 学习心得

  • 2009年02月26日 16:22
  • 205KB
  • 下载

MYSQL学习心得(9) -- 自定义存储过程和函数

MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION 使用CALL语句来调用存储过程,存储过程也可以调用其他存储过程 函数可以从语句外调用,能返回...
  • helongzhong
  • helongzhong
  • 2016年12月12日 10:48
  • 847

关于如何规范地编写存储过程的心得

从事数据中心的工资已经超过5个年头了,对于做数据的程序员来说,打交道最多的就是存储过程了,见过很多写的优秀的存过,也见过很多特别想吐槽的糟心的,那么,如何编写一个少让人吐槽,看着舒服,方便维护,又高效...
  • u013055116
  • u013055116
  • 2017年11月15日 09:52
  • 37

MySQL心得7-1-存储过程

1. 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码...
  • tianyazaiheruan
  • tianyazaiheruan
  • 2012年06月13日 09:03
  • 5395

我的MYSQL学习心得(十) 自定义存储过程和函数

这一篇《我的MYSQL学习心得(十)》将会讲解MYSQL的存储过程和函数 MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION 使用CALL语句来...
  • mao834099514
  • mao834099514
  • 2016年09月18日 18:58
  • 1323

我的MYSQL学习心得(十) 自定义存储过程和函数

这一篇《我的MYSQL学习心得(十)》将会讲解MYSQL的存储过程和函数 MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION 使用CAL...
  • xiaopang758
  • xiaopang758
  • 2016年01月07日 11:13
  • 420

心得8--JDBC回顾-存储过程与设置主键分析

一:  存储过程 1.  mysql 命令回顾: 创建存储过程代码(纯岁的插入):    delimiter  @@  //占位符,为了不让程序默认认为是‘;’结束 create proc...
  • tianyazaiheruan
  • tianyazaiheruan
  • 2012年09月10日 15:55
  • 725
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我使用存储过程的一些心得(一)
举报原因:
原因补充:

(最多只允许输入30个字)