集美大学计算机工程学院实验报告
课程名称:数据库
班级:网络0812
实验成绩:
指导教师:李传目
姓名:
实验项目编号:实验六
实验项目名称:存储过程与触发器
学号:
上机实践时间: 2 学时
1、目的(本次实验所涉及并要求掌握的知识点)
1、熟练
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的存储过程;
2、学会触发器的使用;
2、实验内容与
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图)
A 基于Northwind 数据库中[Order Details]和[Orders]表:
1. 创建存储过程P1,显示OrderID,EmployeeID,OrderDate以及该定单的总金额
2. 创建存储过程P2,显示给定定单日期的OrderID,EmployeeID,OrderDate以及该定单的总金额
3.创建存储过程P4,任意给定两个整数,返回该二数和
B
1. 创建表stu(xh,xm)和表cj(xh,cj),xh为主键,然后创建视图stu_v(xh,xm,cj), 包括xh,xm和cj列,通过视图可以增加,修改,删除,数据行。
2. 创建表cj(xh,cj)和表cj1(xh,cj),xh为主键,使得cj1为的备份,对cj的任何修改自动反映到cj1中
三、实验使用环境(本次实验所使用的平台和相关软件)
Window 7系统,SQL 2008数据库软件
4、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)
A
创建P1过程:
CREATE PROC P1
AS
SELECT OrderID,EmployeeID,OrderDate,
(SELECT sum(Quantity*UnitPrice)
FROM [Order Details]
WHERE [Order Details].OrderID=Orders.OrderID) AS zje
FROM Orders ;
EXEC P1;
创建P2过程:
CREATE PROC P2 @OrderDate datetime
AS
SELECT OrderID,EmployeeID,OrderDate,
(SELECT sum(Quantity*UnitPrice)
FROM [Order Details]
WHERE [Order Details].OrderID=Orders.OrderID) as zje
FROM Orders
WHERE Orders.OrderDate=@OrderDate
EXEC P2 '1996-07-04'
P4创建过程:
CREATE PROC P4 (@ProductID int,@Quantity int)
AS
SELECT (ProductID+Quantity)AS HE
FROM [Order Details]
WHERE ProductID=@ProductID AND Quantity=@Quantity AND OrderID=10248
EXEC P4 11,12
B
1. 创建表stu(xh,xm)和表cj(xh,cj),xh为主键,然后创建视图stu_v(xh,xm,cj), 包括xh,xm和cj列,通过视图可以增加,修改,删除,数据行:
CREATE TABLE stu
(
xh int not null primary key,
xm char(10) NOT NULL
);
CREATE TABLE cj
(
xh int not null primary key,
cj int NOT NULL
);
CREATE VIEW stu_v(xh,xm,cj)
AS
SELECT stu.xh,xm,cj
FROM stu,cj;
CREATE TRIGGER tr_stu_v
ON stu_v
INSTEAD OF INSERT,UPDATE,DELETE
AS
SET NOCOUNT ON
插入:INSERT INTO stu_v
VALUES(2008811044,'蔡世幸',80)
添加:UPDATE stu_v
SET cj=cj+10
删除:DELETE
FROM Stu_v
WHERE xh=2008811049
2. 创建表cj(xh,cj)和表cj1(xh,cj),xh为主键,使得cj1为的备份,对cj的任何修改自动反映到cj1中
CREATE TRIGGER cj_update
ON cj AFTER UPDATE
AS
BEGIN
DECLARE @old_xh int,@old_cj int,@new_xh int,@new_cj int
SELECT @old_xh=xh,@old_cj=cj from deleted
SELECT @new_cj=cj,@new_xh=xh from inserted
UPDATE cj1 set xh=@new_xh,cj=@new_cj
WHERE xh=@new_xh and cj=@old_cj
END
5、实验小结(实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验体会和收获)
进行实验B时遇到多种问题,比如修改视图时遇到错误。经询问知道要先设置触发器。第二小题在不同环境下做有不同效果。有的机器做完无法通过验证,有的可以。不知原因为何。