存储过程_资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储过程_资料.doc

存储过程 存储过程(stored procedure)有时也称为sproc,它是真正的脚本——或者更准确地说,它是批处理(batch)——它存储于数据库中而不是在单独的文件中。存储过程中有输入参数、输出参数以及返回值等,而脚本中不会真的有这些内容,不过该比较相差也不是太多。 目前SQL Server中唯一的编程语言依然是T-SQL,当考虑真正的编程语言时,它离过程语言还是有差距的。但是,当论及T-SQL的作用——数据定义、操作和访问的时候,它要强过C、C++、Visual Basic、 Java、Delphi以及其他的语言。但是T-SQL的强大功能在数据访问和管理上也是有限的。简而言之,它有能力完成大部分简单的任务,但是它不是完成这些任务的最合适的方式。 12.1 创建存储过程:基本语法 在数据库中,创建存储过程和创建其他对象的过程一样。存储过程的基本语法如下: CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY] ] [ ,...n ] [ WITH procedure_option [ ,...n ] ] [ FOR REPLICATION ] AS { sql_statement [;][ ...n ] | method_specifier } [;] procedure_option ::= [ ENCRYPTION ] [ RECOMPILE ] [ EXECUTE AS Clause ] sql_statement ::= { [ BEGIN ] statements [ END ] } method_specifier ::= EXTERNAL NAME assembly_name.class_name.method_name 在这里仍然使用基本的CREATE 对象类型 对象名称语法,它是每个CREATE语句的主干。在对存储过程命名完之后,接着是参数列表。参数是可选择的,稍后讨论。 最后,在关键字AS后是实际的代码。 基本存储过程示例: USE Northwind GO CREATE PROC spShippers AS SELECT * FROM Shippers 如果此处需要考虑为什么要在CREATE语法之前加上GO这个关键词(如果只是运行简单的SELECT语句,就不需要使用它),那是因为大多数CREATE语句不能与其他任何代码共享批处理。事实上,在CREATE TABLE中不适用GO可能有危险。在这种情况下,在CREATE PROC语句中使用USE命令式禁止的,这样会产生错误。 既然创建了存储过程,那么执行它来看一下结果: EXEC spShippers 12.2 使用ALTER改变存储过程 当使用T-SQL 编辑存储过程时,需要记住的是它完全替代了现存的存储过程。使用ALTER PROC 和CREATE PROC 语句的唯一区别在于: ALTER PROC期望找到现存的存储过程,而CREATE则不是。 ALTER PROC 保留了已经建立的存储过程的任何权限。它在系统对象中保留了相同的对象ID并允许保留依赖关系。流入,如果过程A调用过程B,并删除和重新创建了过程B,那么就不能再看到这两者间的依赖关系。如果使用ALTER,则依赖关系仍然存在。 ALTER PROC 在其他对象上保留了任何依赖关系的信息,这些对象可以调用修改的存储过程。 后面这两点非常重要。 注意: 如果执行DROP、然后使用CREATE,这和使用ALTER PROC语句一样,几乎都能得到相同的效果,除了一个很重要的区别——如果使用DROP和CREATE,则需要完全重新建立权限,权限规定了可以使用以及不能使用存储过程的用户。 12.3 删除存储过程 DROP PROC|PROCDURE sproc name 这样就完成了删除。 12.4 参数化 在存储过程的外部,可以通过位置(position)或者引用(reference)传入参数。在存储过程的内部,不用关心参数传入的方式——因为使用同样的方式声明参数。 声明参数 声明参数需要以下2~4部分信息: 名称(name) 数据类型(datatype) 默认值(default value) 方向(direction) 语法如下: @parameter_name [AS] datatype [ = default |

文档评论(0)

docindoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档