⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第8章.txt

📁 sql server 2000 数据库与应用
💻 TXT
字号:
【例8-1】使用CREATE  PROCEDURE语句创建一个名称为proc_bjrs的存储过程,用于 检索现有班级及人数。
 CREATE PROCEDURE proc_bjrs AS
  SELECT DISTINCT(班级表.班级编号),班级表.班级名称,人 数=COUNT(学生基本信息表.学号)
  FROM 学生基本信息表,班级表
  WHERE 班级表.班级编号=学生基本信息表.班级编号
  GROUP BY 班级表.班级编号,班级表.班级名称
  GO
【例8-2】设计一个带有参数的存储过程,该参数用于传递班级编号,根据该参数在学生基本信息表中检索出某一个班级中所有学生的信息。
CREATE PROCEDURE proc_bjcx  @bjbh  VARCHAR(8)
AS
SELECT * FROM 学生基本信息表 WHERE 班级编号=@bjbh
GO
【例8-3】修改已经创建的存储过程proc_bjcx及其功能,将其修改为可以根据系部编号来查询某一个系部中所有学生的信息。修改后将存储过程名称重命名为proc_xbcx。
在查询分析器中运行如下命令,即可完成重命名:
ALTER PROCEDURE proc_bjcx  @xbbh  VARCHAR(2)
AS
SELECT * FROM 学生基本信息表
WHERE 班级编号
IN (SELECT 班级编号 FROM 班级表 WHERE 系部编号=@xbbh)  
GO
SP_RENAME  'proc_bjcx' , 'proc_xbcx'
GO
【例8-4】同时删除当前数据库中的两个存储过程,proc_a和proc_b。
在查询分析器中运行如下命令,即可完成删除操作:
DROP PROCEDURE proc_a , proc_b
GO
【例8-5】在数据库XSCJ中设计一个触发器,该触发器的作用为:当在班级表中删除某一个班级时,在学生基本信息表中该班级所包含的学生信息也全部被删除。
提示:在此例中,由于涉及到了班级表的删除操作,因而需要设计一个DELETE类型的触发器。
USE XSCJ
GO
CREATE TRIGGER del_bj ON 班级表
AFTER DELETE
AS
   DELETE FROM 学生基本信息表 WHERE 班级编号
   IN (SELECT 班级编号 FROM DELETED)
GO
【例8-6】在数据库XSCJ中设计一个触发器,该触发器能够保证在学生基本信息表中添加新的纪录时,新学生的班级编号必须已经存在于班级表中。
提示:设计该触发器有助于实现学生信息的完整性。在此例中由于涉及到了学生基本信息表中的添加操作,因而需要设计一个INSERT类型的触发器。
USE XSCJ
GO
CREATE TRIGGER insert_xs ON 学生基本信息表
AFTER INSERT
AS
   IF EXISTS
   (
    SELECT * FROM INSERTED
    WHERE 班级编号 IN (SELECT 班级编号 FROM 班级表)
   )
       PRINT '添加成功!'
   ELSE
   BEGIN
       PRINT '班级编号与现有的班级不符!'
       ROLLBACK TRANSACTION
   END
【例8-7】修改del_bj触发器,使得在班级表中删除某一个班级时,不仅在学生基本信息表中该班级所包含的学生信息将被删除,而且在成绩表中与学生相关的数据也将被删除。
在查询分析器中运行如下命令:
ALTER TRIGGER del_bj ON 班级表
AFTER DELETE
AS
DELETE FROM 成绩表 WHERE 学号
IN (SELECT 学号 FROM 学生基本信息表 WHERE 班级编号
IN (SELECT 班级编号 FROM DELETED))
DELETE FROM 学生基本信息表 WHERE 班级编号
IN (SELECT 班级编号 FROM DELETED)
【例8-8】删除触发器del_bj以及insert_xs。
USE XSCJ
GO
DROP TRIGGER  del_bj , insert_xs

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -