数据库原理SQL SERVER 存储过程和游标.ppt
文本预览下载声明
数据库原理及应用-SQL DML 存储过程和游标 主要内容 存储过程 存储过程概述 存储过程的创建、管理和执行 系统存储过程 存储过程与触发器 游标 基本概念 基本使用方法 存储过程概述 什么是存储过程 存储过程是SQL语句和可选控制流语句的预编译集合,它以一个名称存储并作为一个单元处理。 存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能 存储过程概述 存储过程的组成(三部分) ①所有的输入参数以及传给调用者的输出参数。 ②被执行的针对数据库的操作语句,包括调用其它存储过程的语句。 ③返回给调用者的状态值,以指明调用是成功还是失败。 存储过程概述 存储过程的初始处理 存储过程概述 存储过程的特点 确保数据访问和操作的一致性,提高应用程序的可维护性; 提高系统的执行效率; 提供一种安全机制; 减少了网络的流量负载; 若要改变业务规则或策略,只需改变存储过程和参数,不必改应用程序。 存储过程概述 存储过程的类型 用户自定义的存储过程 系统提供的存储过程 存储过程的创建 创建存储过程前的注意事项: ①不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。 ②创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。 ③存储过程是数据库对象,其名称必须遵守标识符规则。 ④只能在当前数据库中创建存储过程。 ⑤一个存储过程的最大尺寸为128M。 存储过程的创建 /*不带参数的存储过程*/ use studentGOcreate procedure stu_gradeasselect Sname, Cname, Gradefrom Student, Course, SCwhere Student.Sno = SC.Sno and SC.Cno=Course.CnoGO 存储过程的创建 /*带参数的存储过程*/ use studentGO create procedure stu_avg@Sno varchar(9),@avg float OUTPUTasselect @avg = avg(grade)from scwhere Sno like @SnoGO 存储过程的创建 CREATE PROCEDURE procedure_name[ { @parameter data_type } [ = default ] OUTPUT ] ] [ ,...n ][ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]AS sql_statement [ ...n ] 存储过程的管理 sp_help:返回过程的名字、创建时间、参数等 sp_help stu_grade go sp_helptext:返回create procedure语句 sp_helptext stu_grade go sp_rename:重命名存储过程 sp_rename stu_grade, stu_grd go 存储过程的管理 drop procedure drop procedure stu_grade go 存储过程的执行 语句格式如下: [[EXEC[UTE]]{[@返回状态=]{过程名[:分组号]|@过程名变量} [[@参数名=]{参数值|@参数变量[OUTPUT]|[DEFAULT]}????????[,...n] [ WITH RECOMPILE ] 存储过程的执行 declare @avg floatexecute stu_avg ’200215121’, @avg OUTPUTif @avg 60 begin print ’不及格 ’ print ’……’ endelse print ’及格’GO 存储过程返回状态码 use studentGO create procedure stu_avg@Sno varchar(9) = ’%’,@avg float OUTPUTasselect @avg = avg(grade)from scwhere Sno like @Sno;return @@error;GO 存储过程返回状态码 declare @code intexecute @code=stu_avg ’200215121’,
显示全部