欢迎来到天天文库
浏览记录
ID:39511322
大小:592.00 KB
页数:43页
时间:2019-07-04
《存储过程用户自定义函数与触发器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第13章存储过程、用户自定义函数与触发器计算中心本章内容13.1存储过程概述13.2通过企业管理器创建、修改和删除存储过程13.3存储过程的执行与参数传递13.4用户自定义函数13.5触发器及其作用、效果演示13.1存储过程概述存储过程(StoredProcedure)是什么?简单的说:存储过程是将常用的或很复杂的工作,预先用T-SQL语句写好并用一个指定的名称存储起来的语句集合。课本的定义:是SQLServer服务器上一组预编译的T-SQL语句,用于完成某项任务,它可以接受参数、返回状态值和参数值
2、,并且可以嵌套调用。举例13.1存储过程概述为什么要使用存储过程?存储过程在创建时即在服务器上进行编译,所以执行起来比SQL语句快,且能减少网络通信的负担。可以在单个存储过程中执行一系列SQL语句,完成复杂的操作。存储过程可以重复使用,减少数据库开发人员的工作量。安全性高,可设定只有某些用户才具有对指定存储过程的使用权。13.1存储过程概述存储过程的类型系统存储过程例如:EXECsp_helpdb用户定义存储过程:由用户创建并能完成某一特定功能的存储过程。临时存储过程扩展存储过程例如:EXECxp_
3、cmdshell'dird:'13.1存储过程概述存储过程的功能(1)接收输入参数并以输出参数的形式为调用过程或批处理返回多个值。(2)包含执行数据库操作的编程语句,包括调用其他过程。(3)为调用过程或批处理返回一个状态值,以表示成功或失败(及失败原因)。存储过程特点13.2创建、修改和删除存储过程创建存储过程的指导原则避免出现存储过程的拥有者和底层对象的拥有者不同的情况,建议由dbo用户拥有数据库中所有对象每个存储过程完成单个任务命名本地存储过程的时候,避免使用“sp_”前缀尽量少使用临时存储过程
4、,以避免频繁连接tempdb里的系统表不要直接从syscomments系统表里删除项13.2创建、修改和删除存储过程创建存储过程(1)启动企业管理器,登录到要使用的服务器。(2)选择要创建存储过程的数据库,在左窗格中单击“存储过程”文件夹,此时在右窗格中显式该数据库的所有存储过程,如图13-1所示。图13-1企业管理器中显示的存储过程信息13.2创建、修改和删除存储过程(3)右击“存储过程”文件夹,在弹出菜单中选择【新建存储过程】选项,打开创建存储过程对话框,如下图。图13-2创建存储过程对话框13
5、.2创建、修改和删除存储过程(4)在“文本”编辑框中输入存储过程正文。(5)单击“检查语法”按钮,检查语法是否正确。(6)单击“确定”按钮,保存存储过程。图13-3输入存储过程内容输入内容区域提示:新创建存储过程名字包含在CREATEPROCEDURE语句中,不在保存时输入。13.2创建、修改和删除存储过程修改存储过程(1)在企业管理器中展开服务器组,再展开服务器。(2)展开“数据库”文件夹,再展开要修改存储过程的数据库。(3)在要修改的存储过程上右击,并在弹出的快捷菜单中选择【属性】项,或双击该存
6、储过程,弹出“存储过程属性”对话框。图13-4控制台目录13.2创建、修改和删除存储过程删除存储过程类似于删除表操作,在存储过程显示列表中选择要删除的存储过程(可以用ctrl或shift选多个)。右键单击选中的存储过程,在弹出的快捷菜单中选择【删除】项,打开“除去对象”对话框,如下图,单击【全部除去】按钮,完成删除。图13-5“除去对象”对话框显示与该存储过程相关的对象13.2创建、修改和删除存储过程创建存储过程时,需要确定存储过程的三个组成部分:参数,所有的输入参数以及传给调用者的输出参数。过程体
7、,被执行的针对数据库的操作语句,包括调用其它存储过程的语句;返回状态,返回给调用者的状态值,以指明调用是成功还是失败。13.2创建、修改和删除存储过程不含参数的存储过程例13-1:查询学生成绩。CREATEPROCEDURE查询学生成绩ASSELECT学生表.姓名,课程表.课程名,选课表.成绩FROM选课表INNERJOIN学生表ON选课表.学号=学生表.学号INNERJOIN课程表ON选课表.课程号=课程表.课程号执行:EXEC查询学生成绩13.2创建、修改和删除存储过程例13-2:查找1~100
8、之间的完全平方数。CREATEPROCEDURE查找完全平方数ASdeclare@nintset@n=1while@n*@n<=100beginprintcast(@n*@nasvarchar(5))set@n=@n+1end执行:exec查找完全平方数13.3存储过程的执行与参数传递参数存储过程和调用者之间需要通过参数来交换数据,可以按输入的参数执行,也可由参数输出执行结果。例如:查询学号为s2008001的c01课程的成绩。输入参数:学号(s2008001)和课程
此文档下载收益归作者所有