用看的、听的学真题

study by eyes and ears.

  1. 首页
  2. 数据库系统工程师
  3. 2023年05月数据库系统工程师考试下午真题【应用技术】
  4. 真题详解

2023年05月数据库系统工程师考试下午真题【应用技术】(第4题) 收藏

【4】

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某企业内部信息系统部分简化后的关系模式如下:

员工表:EMPLOYEES(Eid,Ename,Address,Phone,Jid),属性含义分别为:员工编码、员工姓名、家庭住址、联系电话、岗位级别编码。

岗位级别表:JOB_LEVELS(Jid,Jname,Jbase_salary),属性含义分别为:岗位级别编码、岗位名称、岗位基本工资。

员工工资表:SALARY(Eid,attendance_wage,merit_pay,overtime_wage,salary,tax,year,month),属性含义分别为:员工编码、考勤工资、绩效工资、加班工资、最终工资、税、年份、月份。

该企业在每月25日计算员工的工资。首先是根据考勤系统以及绩效系统中的数据计算出员工的考勤、绩效和加班工资,存入到员工工资表,其次结合员工的岗位基本工资,计算出最终工资完成对员工工资表记录的更新。最后依据员工工资表完成工资的发放。

问题1 (6.0分)

下面是月底25日计算某员工最终工资的存储过程程序,请补全空缺处的代码。

CREATE PROCEDURE SalaryCalculation((a)) empld char(8),IN iYear number(4),IN iMonth number(2))

DECLARE

attendance number(14,2);

merit number(14.2);

overtime number(14.2);

base number(14,2);

all_salary number(14,2);

BEGIN

SELECT attendance_wage, merit_pay, overtime_wage

INTO (b)

FROM SALARY

WHERE Eid = empld FOR UPDATE

SELECT Jbase_salary INTO :base

FROM EMPLOYEES T1,(c)

WHERE T1.Jid=T2.Jid AND T1.Eid= empld;

all_salary := attendance + merit + overtime + base;

UPDATE SALARY SET salary = :all_salary

WHERE (d) AND year =iYear AND month =iMonth;

(e)

EXCEPTION

WHEN OTHERS THEN

(f)

END;

暂无

问题2 (5.0分)

为了防止对员工工资表的非法修改(包括内部犯罪),系统特意规定了员工工资表修改的业务规则:对员工工资表的修改只能在每月25日的上班时间进行。

下面是员工工资表修改业务规则对应的程序,请补全空缺处的代码。

CREATE TRIGGER CheckBusinessRule

(g)INSERT OR DELETE OR (h) on SALARY

FOR EACH (i)

BEGIN

IF(TO_CHAR(sysdate,DD)<> (j)

OR(to_number(TO_CHAR(svsdate,HH24))

(k) BETWEEN 8 AND 18) THEN

Raise_Error; // 抛出异常

END IF

END;

暂无

问题3 (4.0分)

人事部门具有每月对员工进行额外奖罚的权限,该奖罚也反应到员工的最终工资上。假设当某月计算一位员工的最终工资时,同一时间人事部门对该员工执行了奖励2000元的事务操作,对应事务的部分调度序列如表4-1所示。

(1)请说明该事务调度存在哪种并发问题?

(2)采用2PL是否可以解决该并发问题?是否会产生死锁?

暂无
广告位