目录

  • 第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.2 创建和执行存储过程

任务10.2 创建和执行存储过程

SQL Server 中,创建一个存储过程有两种方法:

一是使用T-SQL语句CREATEPROCEDURE

二是使用SSMS图形工具界面。


使用T-SQL创建存储过程

创建存储过程需要用CREATE PROCEDURE语句,在学习具体的创建方法之前,先来了解一下创建T-SQL存储过程的规则。

(1)在设计和创建存储过程时,应该满足一定的约束和规则。只有满足了这些约束和规则才能创建有效的存储过程。

(2) CREATE PROCEDURE定义自身可以包括任意数量和类型的T-SQL语句,但下列语句除外:

CREATE AGGREGATE、CREATE SCHEMA、

CREATE DEFAULE、CREATE RULE、

CREATE或ALTER PROCEDURE、

CREATE或ALTER TRIGGER、

CREATE或ALTERVIEW、

CREATE或ALTER FUNCTION、

SET PARSEONLY、SET SHOWPLAN_ALL、

SET SHOWPLAN_TEXT、

SET SHOWPLAN_XML和USE database_nake。

(3)可以引用在同一存储过程中创建的对象,只要引用时已经创建了该对象即可。

(4)可以在存储过程内引用临时表。

(5)如果在存储过程内创建本地临时表,则临时表仅为该存储过程而存在;退出该存储过程后,临时表将消失。

(6)如果执行的存储过程将调用另一个存储过程,则被调用的存储过程可以访问由第一个存储过程创建的所有对象,包括临时表在内。

(7)如果执行对远程SQL Server 2008实例进行更改的远程存储过程,则不能回滚这些更改,而且远程存储过程不参与事务处理。

(8)存储过程中的参数的最大数目为2100。

(9)存储过程中的局部变量的最大数目仅受可用内存的限制。

(10)根据可用内存的不同,存储过程最大可达128MB。


语法格式:

CREATE PROC 存储过程名

[@输入参数 数据类型[=默认值],……,@输出参数 数据类型 OUTPUT]

[WITH ENCRYPTION]

[WITH RECOMPILE]

AS

过程体


例:对[教务数据库] ,创建存储过程[查询成绩],输出:学号,姓名,课程号,课程名,成绩, 任课教师姓名,任课教师号

USE  [教务数据库]

GO 

CREATE  PROCEDURE  查询成绩

 AS 

   SELECT G.学号,S.姓名,G.课程号,K.课程名,G.成绩,T.姓名,G.任课教师号

  FROM  [成绩表]  G,[学生表]  S,[课程表]  K,教师表 T

    WHERE  G.学号=S.学号 AND  G.课程号=K.课程号  AND  G.任课教师号=T.教师号


例: 执行存储过程

EXEC   查询成绩

结果(略)

思考:若要求输出成绩在85分以上的,如何修改?   


利用系统存储过程,查阅存储过程内容: 

 sp_helptext  存储过程名

例:sp_helptext 查询成绩



任务 存储行 过程

存储过程创建完后,要产生效果,必须执行。

在SQL Server 中创建执行存储过程当需要执行存储过程时,可以使用T-SQL语句EXECUTE。如果存储过程是批处理中的第一条语句,那么不使用EXECUTE关键字也可以执行该存储过程,其语法格式如下:

Execute a stored procedure or function    [ { EXE | EXECUTE)}]    {    [ @return_status=  ]    {  module_name  [;number] | @module_name_var  }    [[@parameter=]  {  value | @variable  [OUTPUT  ] |  [  DEFAULT ]    ][…n]    [  WITH RECOMPILE]    }    []


常用格式:

EXEC PROC 存储过程名

[[@输入参数=]值,……,@对应输出参数的变量 OUTPUT]


例:创建存储过程 GetBookCategory

USE Library

GO

CREATE PROCEDURE GetBookCategory

 AS 

SELECT 类编号, 类名称

FROM BookCategory


执行已创建的存储过程

要使用EXECUTE (或简写EXEC) 命令 ,如下图所示。

单击工具栏中【执行】按钮,创建该存储过程。存储过程创建成功后,执行存储过程:  EXECUTE GetBookCategory



例:不带参数的存储过程


【例】在“学生成绩管理系统”的[教务数据库]中创建一个存储过程,该存储过程返回‘19软件’专业的学生信息。该存储过程不使用任何参数,可在【查询编辑器】窗口中输入如下代码:


USE [教务数据库]

GO

CREATE PROCEDURE GetStuInfo

AS

SELECT * FROM  学生表

WHERE 专业班级LIKE '%19软件%'



单击工具栏中【执行】按钮,创建该存储过程。存储过程创建成功后,执行存储过程:

  EXECUTE  GetStuInfo

   执行结果如图所示:


二、 使用SSMS执行存储过程

     除了使用EXEC语句执行存储过程,使用SSMS图形工具界面也可以来执行存储过程。







加密存储过程

可使用WITH ENCRYPTION选项对存储过程进行加密,对用户隐藏存储过程的脚本。

   【例】在“学生成绩管理系统”的[教务数据库]中创建一个加密存储过程,该存储过程可获取所有学生信息。可在【查询编辑器】窗口中输入如下代码并执行:

  USE [教务数据库]

  GO

  CREATE PROCEDURE GetInfo 

  WITH ENCRYPTION

  AS

          SELECT * FROM  学生表


存储过程加密后,将无法直接查看其脚本,如使用系统存储过程sp_helpext查看:

  EXEC sp_helptext GetInfo

   

  查看的结果是显示提示信息“对象 ‘GetInfo’ 的文本已加密。”。


存储过程加密后可用不可看存储过程脚本(程序)

    EXEC GetInfo