SQL 中关于计算薪资的存储过程

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:58:39
功能 在系统功能中增加动作,点击后计算所有员工薪资
要求 使用存储过程实现各个员工薪资计算功能,在语句中使用游标功能
条件 根据不同的员工类型,按不同计算方式计算在职员工薪资
计算方式 当员工类型为正式员工时,实发薪资=(当前薪资+奖金)*税率
当员工类型为临时员工时,实发薪资=(当前薪资)*税率
当员工类型为实习生时,实发薪资=(当前薪资)*0.05+200
"税率= when 薪资>=0 and 薪资<=2000 then 0.01
when 薪资>=2000 and 薪资<=3000 then 0.05
when 薪资>=2000 then 0.1"
结果 将员工工号,实发薪资,税率更新至SQL新表HRSALARY中

附加题(可选择完成) 当计算日期(当前系统日期)和入职日期为同一个月时,最后的实发薪资再乘以入职到本月月底的工作天数/21.75

CREATE TABLE [HRSALARY] (
[YYYYMM] [char] (8) NOT NULL ,
[EId] [int] NOT NULL ,
[SolidPay] [money] NULL ,
[ERate] [money] NULL ,
CONSTRAINT [PK_HRSALARY] PRIMARY KEY CLUSTERED
(
[YYYYMM],
[EId]
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [PayScale] (
[YYYYMM] [char] (6) NOT NULL ,
[EId] [int] NOT NULL ,
[EName] [varchar] (50) NULL ,
[PayScale] [money] NULL ,
[Premium] [money] NULL ,
[EType] [int] NULL ,
CONSTRAINT [PK_PayScale] PRIMARY KEY CLUSTERED
(
[YYYYMM],
[EId]
) ON [PRIMARY]
) ON [PRIMARY]
GO

Create Procedure dbo.Sp_UpdateSolidPay
As
Begin
Declare @Type int,@EId int, @pay money,@Pre money, @YYYYMM char(6)
Declare @SolidPay money,@Erate money
Declare Fetch_EIds_Cursor cursor for select yyyymm,Eid,payscale,premium,Etype from PayScale

Open Fetch_EIds_Cursor
Fet