当前位置: 首页icon 51CTO软考 > 软考资讯 >考试科目 >【持续更新】2023年5月数据库系统工程师 下午题之十

【持续更新】2023年5月数据库系统工程师 下午题之十

作者:mb6059652fef3b12023-11-09 01:00:14
备考咨询 刷题指导
添加专属学姐
下载资料 2024上半年软考备考资料+考试大纲
下载按钮 下载
引号

摘要:对于【数据库系统工程师】软考考试而言,真题无疑是最重要的学习资料之一。在软考备考过程中,吃透真题、掌握真题所考知识点、熟悉真题的出题思路,对我们提升分数的效果是最明显的,通过对真题的反复练习,还可以查漏补缺。今天,给大家带来【【持续更新】2023年5月数据库系统工程师 下午题】部分真题的详解,一起来看看吧~1、【问题1】(6分)下面是月底25日计算某员工最终工资的存储过

引号
摘要:对于【数据库系统工程师】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【【持续更新】2023年5月数据库系统工程师 下午题】部分试题的详解,一起来看看吧~



1、【问题1】(6分)下面是月底25日计算某员工最终工资的存储过程程序,请补全空缺处的代码。CREATE PROCEDURE SalaryCalculation( (a) empId char(8), IN iYear number(4), IN iMonth number(2))DECLAREattendance number(14,2);merit number(14,2);overtime number(14,2);base number(14,2);all _salary number(14,2);BEGINSELECT attendance_wage, merit_pay, overtime_wageINTO (b)FROM SALARYWHERE Eid = empld FOR UPDATE;SELECT Jbase_salary INTO:baseFROM EMPLOYEES T1, (e)WHERE T1. Jid=T2. Jid AND T1.Eid= empld;all_salary := attendance + merit + overtime + base;UPDATE SALARY SET salary = :all_salaryWHERE (d) AND year = iYear AND month = iMonth;EXCEPTION WHEN OTHERS THEN (f) ;END;
答案:A
答题解析:

本题考查存储过程与事务操作相关知识。

参考答案如下:

a:IN

b::attendance,:merit,:overtime

c:JOB_LEVELS T2

d:eid=empid

e:commit

f:rollback

存储过程代码解析如下。

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

//定义存储过程SalaryCalculation,其包含3个输入参数empId、iYear、iMonth

DECLARE //定义4个数值型本地变量

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// 从SALARY表中找出给定员工empid的记录

INTO (b) :attendance,:merit,:overtime //并将attendance_wage, merit_pay, overtime_wage存入本地变量attendance,:merit,:overtime

FROM SALARY

WHERE Eid = empid FOR UPDATE;

SELECT Jbase_salary INTO:base //连接EMPLOYEES和JOB_LEVELS表,找出给定员工empid的基本工资Jbase_salary,存入base中

FROM EMPLOYEES T1, (c) JOB_LEVELS T2

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

all_salary := attendance + merit + overtime + base;//计算最终工资

UPDATE SALARY SET salary = :all_salary //更新给定员工empid,给定年月iYear、iMonth的工资记录中的最终工资字段。

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

(e) commit;//事务提交

EXCEPTION WHEN OTHERS THEN(f)rollback ;//如果出现异常,事务回滚

END;



查看完整试题>>>


代理合作学习群