目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
任务10.1 存储过程及优点


第10单元  创建和管理存储过程—


学习目标

知识目标:

了解存储过程的作用

掌握存储过程的分类

能力目标:

会创建和管理用户自定义存储过程

会调用存储过程



—

任务1 存储过程

存储过程概述

      在开发SQL Server应用程序过程中,T-SQL语句是应用程序与SQL Server数据库之间使用的主要编译接口。

    应用程序与SQL Server数据库交互执行某些操作有两种方法:一种是存储在本地的应用程序中记录操作命令,应用程序向SQL Server发送每一个命令,并对返回的数据进行处理:另一种是在SQL Server中定义某个过程,其中记录了一系列的操作,每次应用程序只需调用该过程就可以完成操作。这种在SQL Server中定义的过程被称为存储过程。  

     存储过程是一组T-SQL语句的集合,它类似于函数,具有模块化的优点。在T-SQL语句的编写过程中,如果只有几百条语句则很容易查看阅读,可以不用对这些语句进行模块化,但如果有成千上万条语句,如果不采用存储过程,则是非常难以阅读的。例如,有一些算法,如某公司的计算工资的算法,如果不采用存储过程,则每次计算工资时需要重写算法语句,难免不出差错。另外,还有许许多多使用到存储过程的场合,可以说,存储过程是T-SQL语句的骨架。

  SQL Server中的存储过程与其他语言中的过程(或函数>类似,它们有一些共同的 特征,如它们都接受输入参数,并向调用程序或语句返回值。它们都包含执行操作或调用其他过程的编程语句。可以向调用程序返回状态值,指示执行过程是否成功。

相对直接使用T-SQL语句来说,存储过程具有如下优点:

存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库服务器中,第一次执行时将被编译,之后调用将不再编译。它有以下优点:

1.允许模块化程序设计。即只需创建一次,以后在程序中就可以反复调用该存储过程。通过嵌套的存储过程的调用,可以建立起程序调用的层次关系,使程序结构更加清晰。

2.提高执行效率。如果某操作需要执行大量SQL语句或重复执行,由于存储过程已经被编译过了,所以它的执行效率比直接运行SQL语句更高。因为存储过程在最初创建时编译,在使用时已经是使用目标代码了。

3.减少网络流量。存储过程是存放在服务器端的,客户端只需发送一条调用命令即可。

4.更好的安全机制,可以用授予用户执行存储过程的权限来代替授予用户数据库对象的权限,从而提高数据的安全性。


存储过程的类型

SQL Server的存储过程主要分为三类:系统存储过程、自定义存储过程和扩展存储过程。

系统存储过程是由SQL Server提供可以作为命令执行的存储过程,通常以“sp_”为前缀。

自定义存储过程是由用户自己用T-SQL语句编写的存储过程,可以完成某个特定业务要求。

“用户自定义存储过程”也称本地存储过程,它是创建在用户自己数据库中的存储过程,这种存储过程是用户创建的普通存储过程,没有前缀sp_。在SQL Server 中,用户存储过程可以使用T-SQL语言编写,也可以使用CLR方式编写。在此主要介绍使用T-SQL语言编写的本地存储过程。


扩展存储过程是通过动态链接库(DLL文件)来实现的,通常以“xp_”为前缀。

例:exec xp_cmdshell 'dir c:' 

可能出现出错信息:

 SQL Server 阻止了对组件 'xp_cmdshell' 的 过程 'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。


备注   解决思路:出现这种错误是因为使用bcp命令的时候,没有权限。SQL Server的用户没有SP_configure的使用权限,需要将对应用户添加"sysadmin"角色。所以,要首先启动该命令。

执行下面命令:

sp_configure 'show advanced options',1

reconfigure

go

sp_configure 'xp_cmdshell',1

reconfigure

再执行:exec xp_cmdshell 'dir c:' 

便可成功执行。


系统存储过程可以归纳为若干类。下面是几个常用的类别:

数据库引擎存储过程:用于SQL Server数据库引擎的常规维护。

分布式查询存储过程:用于实现和管理分布式查询。分布式查询可以从多个数据源检索数据。这些数据源可以包含一个或多个SQL Server数据库。

游标存储过程:用于实现游标变量功能。

复制存储过程:用于管理复制,包括复制表的架构和数据。

安全性存储过程:用于管理数据库安全性。

SQL Server代理存储过程:由SQL Server代理用于管理计划的活动和事件驱动活动。

XML存储过程:用于XML文本管理。

常规扩展存储过程:提供从SQL Server实例到外部程序的接口,以便进行各种维  护活。

临时存储过程     是一种特殊的本地存储过程。如果在本地存储过程前面有一个“#”,这种存储过程称为局部临时存储过程,只能在一个用户会话中使用。如果在本地存储过程前面有一个“##”,这种存储过程称为全局临时存储过程,可以在所有用户会话中使用。

远程存储过程   是指保存在远程服务器上的存储过程,也就是非本地服务器上的存储过程。


本单元主要介绍自定义存储过程的创建和管理。