第3章(5)存储过程与触发器.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文档。上传文档
查看更多
An Introduction to Database System 数据库处理和存储过程 当代企业级的关系数据库的两个重要特征——存储过程和触发器。 存储过程的功能:在数据库之内可执行与数据库相关的应用处理; 触发器的功能:可根据数据库中出现的情况自动的触发一个存储过程。 存储过程和触发器基本上是把SQL扩展成一个更完整的编程语言。 一、存储过程的概念 存储过程是由控制语句和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时只要调用即可。 在SQL的原始形式里,只用于表达数据库的操作,而数据库操作的顺序由操作人员决定,或由包含它的其他的编程语言的控制流程控制。 在扩展的SQL语言中,“移植”了一般编程语言所具备的以下功能: 条件结构 循环结构 变量 过程 存储过程首先在Sybase SQL Server中实现,之后,许多DBMS产品在C或Pascal的基础上模仿建立了自己的SPL(存储过程语言)结构。 所以,不同语言中存储过程的概念是相似的,但语法却差异很大。 我们以Transact-SQL为例。 二、使用存储过程 1.创建存储过程 Create Procedure:定义一个存储过程 存储过程的名称 参数的数目和类型 局部变量的名称和类型 实现功能的语句序列 Drop Procedure:删除存储过程 示例:删除某学生记录的同时,删除其选课记录 分两步: delete from sc where sno=‘95001’ delete from student where sno= ‘95001’ 用存储过程实现 1.定义 CREATE PROC del_s @sno char(10) AS BEGIN delete from sc where sno=@sno delete from student where sno=@sno END 2.调用:del_s ‘95001’ 示例:有个样本数据库如下: 客户表 CUSTOMER(#cust_num, company, cust_rep, credit_limit) 销售人员表 SALESREP(#empl_num, name, age, office, title, hire_date, manager, quota, sales) 销售公司表 OFFICE(#office, city, region,mgr, target, sales) 产品表 PRODUCT(#product_id, description, price, qty_on_hand) 订单表 ORDER(#order_num, date, cust, rep, product, qty, amount) 若要将一个客户增加到样本数据库中,可能涉及到以下步骤: 增加一行到客户表中; 更新销售人员行,提高其销售目标; 更新销售公司行,提高其销售目标。 例如:在Chicago分部的103号销售员新增一客户。该客户编号为2137,公司名为XYZ Corporation, 信用卡透支上限为3000.00元。同时将Chicago分部及103号销售员的销售目标提高5000.00元。 如果没有存储过程,需执行以下SQL语句: INSERT INTO CUSTOMER(cust_num,company,cust_rep,credit_limit) VALUES(2137,’XYZ Corporation’,103,3000.00) UPDATE SALESREP SET quota=quota+5000.00 WHERE empl_num=103 UPDATE OFFICE SET target=target+5000.00 WHERE city=‘Chicago’ 如果有存储过程,所有工作可嵌进一个定义好的SQL程序中。 CREATE PROC add_cust( @cust_name varchar(20), @cust_num integer, @credit_lim money, @target_sls money, @rep_id integer, @offc_city vachar(15)) AS BEGIN INSERT INTO CUSTOMER(cust_num,company,cust_rep,credit_limit) VALUES(@cust_num,@cust_name,@rep_id,@credit_lim) UPDATE SALESREP SET quota=quota+@target_sls WHERE empl_num

文档评论(0)

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

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

1亿VIP精品文档

相关文档