摘要:2023上半年數(shù)據(jù)庫系統(tǒng)工程師下午的考試已結(jié)束,希賽小編整理了網(wǎng)友回憶版2023上半年數(shù)據(jù)庫系統(tǒng)工程師下午真題答案(四),希望對考生有所幫助。
很多考生關注2023上半年數(shù)據(jù)庫系統(tǒng)工程師下午的真題及答案,希賽小編整理了網(wǎng)友回憶版2023上半年數(shù)據(jù)庫系統(tǒng)工程師下午真題答案(四),完整版真題可在本文文首或文末本文資料處下載。答案解析請考生關注考后公開課。
試題四:
閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)。
【說明】
某企業(yè)內(nèi)部信息系統(tǒng)部分簡化后的關系模式如下:員工表:EMPLOYEES(Eid,Ename,Address,Phone,Jid):屬性含義分別為:員工編碼、員工姓名、家庭住址、聯(lián)系電話、崗位級別編碼。
崗位級別表:JOB_LEVELS(Jid,Jname,Jbase_salary):屬性含義分別為:崗位級別編碼、崗位名稱、崗位基本工資。
員工工資表:SALARY(Eid,attendance_wage,merit_pay,overtime_wage,salary,tax,year,month):屬性含義分別為:員工編碼、考勤工資、績效工資、加班工資、最終工資、稅、年份、月份。
該企業(yè)在每月25日計算員工的工資。首先是根據(jù)考勤系統(tǒng)以及績效系統(tǒng)中的數(shù)據(jù),計算出員工的考勤、績效和加班工資,存入到員工工資表;其次結(jié)合員工的崗位基本工資,計算出最終工資,完成對員工工資表記錄的更新。最后依據(jù)員工工資表完成工資的發(fā)放。
問題內(nèi)容:
【問題1】(6分)
下面是月底25日計算某員工最終工資的存儲過程程序,請補全空缺處的代碼。
CREATE PROCEDURE SalaryCalculation((a) empId 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分)
為了防止對員工工資表的非法修改(包括內(nèi)部犯罪),系統(tǒng)特意規(guī)定了員工工資表修改的業(yè)務規(guī)則:對員工工資表的修改只能在每月25日的上班時間進行。
下面是員工工資表修改業(yè)務規(guī)則對應的程序,請補全空缺處的代碼。
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(sysdate,'HH24))
(k) BETWEEN 8 AND 18)THEN
Raise_Error;//拋出異常
END IF;
END;
【問題3】(4分)
人事部門具有每月對員工進行額外獎罰的權限,該獎罰也反應到員工的最終工資上。假設當某月計算一位員工的最終工資時,同一時間人事部門對該員工執(zhí)行了獎勵2000元的事務操作,對應事務的部分調(diào)度序列如表4-1所示。
(1)請說明該事務調(diào)度存在哪種并發(fā)問題?
(2)采用2PL是否可以解決該并發(fā)問題?是否會產(chǎn)生死鎖?
軟考備考資料免費領取
去領取