《主流数据库系统与应用(SQL)》课程实验报告4

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验内容与完成情况:
1: 创建触发器
1、在数据库 Company_Data的表"项目数据表"和"员工数据表"中分别创建触发器。


于表"员工数据表"创建AFTER INSERT 触发器 Tigger_NewEmployeeSalary, 将
插入员工的工资额限制在 5000以内。

create trigger Tigger_NewEmployeeSalary on Employee for insert
as
alter table Employee add constraint ck_Salary check(insered.工资<5000)
Go
2.书写CREATE TRIGGER语句, 基于表"员工数据表"创建AFTER UPDATE触发器Trigger_SalaryChange, 将员工工资变动额限制在2000以内。

create trigger Trigger_SalaryChange on Employee
for update
as
begin
declare @sal money
select @sal=工资 from updated
if @sal<2000
update Employee
set 工资=2000
End
2: 创建存储过程
在数据库Company_Data中创建存储过程Procedure_SalaryByDept, 要求返回某一特定部门所有员工的工资总和, 其中特定部门的名称以存储过程的输入参数进行传递。

在查询窗口书写 CREATE PROCEDURE Transact-SQL语句创建存储过程
Procedure_SalaryByDept, 并带有一个输入参数@Department用于传递部门名称, 一个输出参数@TotalSalary用于传递输出结果。

(3)选择所属部门为该参数传递的部门名称的所有记录, 并对其工资字段求和。

(4)报告该部门的工资总额。

create proc Procedure_SalaryByDept
@Department char(50),@TotalSalary money output
as
if(@Department in(select 所属部门 from Employee))
begin
select @TotalSalary=sum(工资) from Employee where 所属部门=@Department
select 编号,姓名,性别,所属部门,工资,@TotalSalary as '工资总和' from Employee where 所属部门=@Department
end
else
begin
select '不存在该部门'
end
GO
(5)执行这个创建存储过程的语句。

Exec Procedure_SalaryByDept
(6)执行系统存储过程sp_help查看该存储过程的一般信息。

sp_help Procedure_SalaryByDept
执行该存储过程, 分别计算项目部、录入部、和检验部的工资总额。

declare @Department char
declare @TotalSalary money
exec Procedure_SalaryByDept '项目部',@TotalSalary output
declare @Department char
declare @TotalSalary money
exec Procedure_SalaryByDept '录入部',@TotalSalary output
declare @Department char
declare @TotalSalary money
exec Procedure_SalaryByDept '检验部',@TotalSalary output
出现的问题:
1: create trigger Trigger_SalaryChange on Employee
for update
as
begin
declare @sal money
select @sal=工资 from updated
if @sal<2000
update Employee
set 工资=2000
End
1.解决方案(列出遇到的问题和解决办法, 列出没有解决的问题):
2.from mployee错误。

相关文档
最新文档