- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch6 存储过程和触发器 Transact-SQL编程 SQL是关系数据库标准查询语言; ANSI和ISO针对SQL制定了相应标准(SQL86、SQL92、SQL99、SQL2003标准); Microsoft 公司开发的SQL ——Transact-SQL: 兼容标准中的大多数功能 并进行了扩展:变量、流程控制语句 局部变量的使用——声明、赋值、显示 【例1】定义局部变量@myvar,并为其赋值,最后显示@myvar的值。 DECLARE @myvar char(20) ---变量名@myvar SET @myvar = This is a test‘ ---用SET赋值 ----也可以用SELECT赋值 SELECT @myvar= ‘This is a test‘ ----也可以用SELECT显示 SELECT @myvar --用SELECT语句显示 流程控制语句——用于控制T-SQL语句的执行流程 循环语句: WHILE 条件 BEGIN 语句块 END 2 存储过程 存储过程是由一系列预编译SQL语句和流量控制语句组成的。 存储过程具有参数传递、进行判断、声明变量、返回信息并扩充标准SQL语言的功能。 可以把存储过程看成是以数据库对象形式存储在SQL Server中的一段程序或函数。 当执行存储过程时,该存储过程是在SQL Server上运行,而不是在客户端发送请求。 存储过程分为: 系统存储过程 用户存储所定义的存储过程 2 存储过程 问题的提出? 2.1 存储过程的分类 系统存储过程: SQL Server内置的存储过程,存储在master库中,主要用途是执行SQL Server的某些管理功能、显示有关数据库和用户的信息。系统存储过程名以SP_开头,可以在任何数据库中执行系统存储过程。 用户存储过程:用户自行创建并存储在用户数据库中的存储过程。 临时存储过程:分为局部临时存储过程和全局临时存储过程。 存储过程的分类 局部临时存储过程名称以#开头,存放在tempdb数据库中,只由创建并连接的用户使用,当该用户断开连接时将自动删除局部临时存储过程。 全局临时存储过程名称以##开头,存放在tempdb数据库中,允许所有连接的用户使用,在所有用户断开连接时自动被删除。 远程存储过程:位于远程服务器上的存储过程。 扩展存储过程:利用外部语言(如C)编写的存储过程,以弥补SQL Server的不足之处,扩展新的功能 2.2 创建存储过程 使用CREATE PROCEDURE语句 使用SSMS中的菜单命令 CREATE PROCEDURE语句 CREATE PROC[ EDURE ] 存储过程名 AS T-SQL语句组 例 5 在查询窗口中 创建存储过程“增加成绩”,将表“学生”中所有学生的入学成绩增加10分。 USE 学生管理 GO CREATE PROCEDURE 增加成绩 AS UPDATE 学生 SET 入学成绩 = 入学成绩 + 10 GO 例 5 在创建一个存储过程时,如果已经存在同名的存储过程,则不允许创建新的存储过程。可以将以上代码改写为: USE 学生管理 --如果存在名称为“增加成绩”的存储过程,则将其删除 IF EXISTS (SELECT name FROM sysobjects WHERE name = 增加成绩 AND type = P) DROP PROCEDURE 增加成绩 GO CREATE PROCEDURE 增加成绩 AS UPDATE 学生 SET 入学成绩 = 入学成绩 + 10 GO 例 6 网上选课(限选30人)。 2.3 执行存储过程 执行存储过程“增加成绩”,并查看执行结果。 USE 学生管理 GO EXEC 增加成绩 SELECT * FROM 学生 GO 执行存储过程“选课”。 USE 学生管理 GO EXEC 选课 GO 例 7 :改写例 6 使之通用各种限选课 执行例 7 EXEC proc_选课 ‘2009061101’,’c0501’, 30 GO EXEC proc_选课 ‘2009061102’,’c0501’, 30 GO EXEC proc_选课 ‘2009061103’,’c0501’, 30 GO 例 8 :改写例 7,使用输出参数 执行例 8
文档评论(0)