数据库第四次实验下(存储过程).pptVIP

  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文档。上传文档
查看更多
Company Name LOGO LOGO 数据库系统实验 实验四下:存储过程 存储过程 SQL Server提供了一种方法:可以将一些预先编译的SQL语句集中起来由SQL Server数据库服务器来完成以实现某个任务,这就是存储过程。 存储过程常驻在SQL Server数据库服务器的内存中。 存储过程 使用存储过程的优点是: (1)过程在服务器端运行,执行速度快。 (2)过程执行一次后代码就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译代码执行,提高了系统性能。 (3) 确保数据库的安全。可以不授权用户直接访问应用程序中的一些表,而是授权用户执行访问这些表的过程。非表的授权用户除非通过过程,否则就不能访问这些表。 (4) 自动完成需要预先执行的任务。过程可以在系统启动时自动执行,而不必在系统启动后再进行手工操作,大大方便了用户的使用,可以自动完成一些需要预先执行的任务。 用户存储过程只能定义在当前数据库中,使用SQL命令语句创建存储过程。在用户的定义中不能使用下列对象创建语句: CREATE VIEW CREATE DEFAULT CREATE RULE CREATE PROCEDURE CREATE TRIGGER 1. SQL命令创建存储过程 语法格式: CREATE [OR ALTER] PROCEDURE procedure_name /*定义过程名*/ [{@参数 数据类型}[VARYING][=默认值][OUTPUT][...,n]] /*定义参数类型 及属性*/ AS sql_statement /*PL/SQL过程体,要执行的操作*/ 其中: procedure_name:是过程名,必须符合标识符规则。 @参数:是过程的参数。参数名必须符合标识符规则,创建过程时,可以声明一个或多个参数,执行过程时应提供相对应的参数。可以对它赋默认值。若指定OUTPUT则该变量为一个输出变量。 sql_statement:代表过程体包含的PL/SQL语句。 2、执行存储过程 EXEC[UTE] Procedure_Name {value|express[,...n][,@parameter OUTPUT]} 其中,@parameter后面跟了OUTPUT表明该变量为接受存储过程的输出变量的值,在执行语句前需用Declare声明 例7 查询products表,如果存在输入值,则输出“存在该产品”,否则输出“不存在该产品”。 create proc exist_pro @productname nvarchar(40)=A% as begin if exists(select * from products where productname like @productname) print 存在+cast(@productname as nvarchar(40))+产品 else print 不存在+cast(@productname as nvarchar(40))+产品 end --执行: exec exist_pro Tofu 例8 使用存储过程计算给定CategoryID的产品(默认为‘1’)的总价 create proc sum_price @categoryid int=1,@sum_prc money output as begin select @sum_prc=sum(unitprice) from products where categoryid=@categoryid print cast(@categoryid as char(5))+CategoryID产品的总价为:+cast(@sum_prc as char(10)) end --执行该存储过程 declare @sum_prc money --声明传递出来的变量 exec sum_price 4,@sum_prc output --声明这是个输出变量 SQL命令修改存储过程 语法格式: ALTER [OR ALTER] PROCEDURE procedure_name /*定义过程名*/ [{@参数 数据类型}[VARYING][=默认值][OUTPUT][...,n]] /*定义参数类型 及属性*/ AS sql_statement /*PL/SQL过程体,要执行的操作*/ 删除存储过程 DROP proc[edu

文档评论(0)

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

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

1亿VIP精品文档

相关文档