-
淮海工学院计算机工程学院
实
验
报
告
书
课
程
名
:
《数据库原理及应用》
题
目:
存储过程和触发器
班
级:
软件
132
学
号:
2013122907
姓
名:
孙莹莹
评语:
成绩:
指导教师:
批阅时间:
年
月
日
《
数据库原理及应用
》实验报告
- 1
–
一.
目的与要求
1.
2.
3.
4.
掌握存储过程的创建方法;
掌握存储过程的执行、修改和删除等操作;
掌握触发器的创建方法;
掌握触发器的使用、修改和删除等相关内容
二.
实验内容
基于前面建立的
factory
数据库,使用
T-SQL
语句完成如下各小题的功能:
1.
创建一个为
worker
表添加职工记录的存储过程
Addworke
r
;
2.
创建一个存储过程
Delworker
删除
worker
表中指定职工号的记录。
3.
显示存储过程
Delworker
;
4.
删除存储过程
< br>Addworker
和
Delworker.
三.
实验步骤
1 .
(1)
建立存储过程
USE factory
GO
CREATE PROCEDURE Addworker
@no int=NULL,
@name char(10)=NULL,
@sex char(2)=NULL,
@birthday datetime=NULL,
@na
char(2)=NULL,
@wtime datetime=NULL,
@depno int=NULL
AS
IF @no IS NULL OR @name IS NULL OR @sex
IS NULL OR
@birthday IS NULL OR
@depno IS NULL
BEGIN
PRINT
'
请重新输入该职工信息!
'
PRINT
'
你必须提供职工号、姓名、性别、出生日期、部门号
'
RETURN
END
BEGIN TRANSACTION
INSERT
INTO worker
<
/p>
VALUES(@no,@name,@sex,@birthday,@na,@wti
me,@depno)
IF @@error<>0
BEGIN
ROLLBACK TRAN
RETURN
END
《
数据库原理及应用
》实验报告
- 2
–
COMMIT TRANSACTION
PRINT '
p>
职工
'+@name+'
的信息成功添加到
表
worker
中
'
(
2
)验证存储过程
USE factory
GO
Addworker 20,'
陈立
'
,'
女
','55/03/08','
否
','75/10/10',4
GO
SELECT
职工号
,
姓名
,
性别
,
党员否
FROM worker
GO
2.
(1)
建立存储程序
USE factory
GO
CREATE PROCEDURE Delworker
@no int=NULL
AS
IF @no IS
NULL
BEGIN
PRINT
'
必须输入职工号!
'
RETURN
END
BEGIN TRANSACTION
DELETE FROM worker WHERE
职工号
=@no
IF
@@error<>0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRANSACTION
PRINT
'
成功删除职工号为
'+CAST(@no AS
CHAR(2))+'
的职工记录
'
执行下列语句,可验证存储过程的正确性:
USE factory
GO
Delworker 20
GO
SELECT
职工号
,
姓名
,
性别
,
党员否
FROM worker
GO
3.
USE factory
GO
EXEC sp_helptext Delworker
GO
4.
USE factory
GO
IF EXISTS (SELECT name
FROM sysobjects
《
数据库原理及应用
》实验报告
- 3
–
WHERE name = 'Addworker' AND type ='P')
DROP PROCEDURE Addworker
GO
IF EXISTS (SELECT name
FROM sysobjects
WHERE name =
'Delworker' AND type ='P')
DROP
PROCEDURE Delworker
GO
5.
建立触发器
depart_update
的程
序如下:
USE factory
GO
IF EXISTS (SELECT name
FROM sysobjects
WHERE type='TR' AND
name='depart_update')
DROP TRIGGER
depart_update
GO
CREATE
TRIGGER depart_update ON depart
AFTER UPDATE
AS
DECLARE @olddepno int,@newdepno int
SELECT @olddepno=
部门号
FROM
deleted
SELECT
@newdepno=
部门号
FROM inserted
UPDATE worker
SET
部门号
=@newdepno
WHERE
部门号
=@olddepno
GO
执行下列语句,可验证存储过程的正确性:
USE factory
GO
PRINT '
将部门号改为
'
UPDATE depart
SET
部门号
=105
WHERE
部门号
=101
GO
SELECT
职工号
,
姓名
,
部门号
FROM
worker
GO
PRINT
'
将部门号改为
'
UPDATE
depart
SET
部门号
=101
WHERE
部门号
=105
GO
SELECT
职工号
,
姓名
,
部门号
FROM
worker
GO
6.
建立触发器
worker_delete
的程序如下:
USE
factory
GO
IF
EXISTS
(
SELECT
name
FROM
sysobjects