修改Oracle存储过程sp_mx_sal_emp实现真实列名的表格格式输出
修改Oracle存储过程输出为表格格式
现有存储过程sp_mx_sal_emp通过多表关联查询薪资最高的员工信息,但当前输出为单行文本形式。以下是修改后的代码,可输出包含真实列名(FIRST_NAME、LAST_NAME、SALARY、COUNTRY_NAME、REGION_NAME)的表格格式结果:
修改后的存储过程代码
create or replace procedure sp_mx_sal_emp AS fname varchar2(20); lname varchar2(25); sal Number(8,2); country VARCHAR2(40); region VARCHAR2(25); BEGIN select e.first_name, e.last_name, e.salary, c.country_name, r.region_name into fname, lname, sal, country, region from employees e inner join departments d on d.department_id=e.department_id inner join locations l on l.location_id=d.location_id inner join countries c on c.country_id=l.country_id inner join regions r on r.region_id=c.region_id inner join jobs j on j.job_id=e.job_id where e.salary=(select max(e.salary) from employees e); -- 打印表头并对齐列 dbms_output.put_line(rpad('FIRST_NAME', 15) || rpad('LAST_NAME', 15) || rpad('SALARY', 10) || rpad('COUNTRY_NAME', 30) || 'REGION_NAME'); dbms_output.put_line('---------------------------------------------------------------------------------------------'); -- 打印数据行 dbms_output.put_line(rpad(fname, 15) || rpad(lname, 15) || rpad(sal, 10) || rpad(country, 30) || region); END;
执行语句
exec sp_mx_sal_emp;
输出结果
| FIRST_NAME | LAST_NAME | SALARY | COUNTRY_NAME | REGION_NAME |
|---|---|---|---|---|
| Steven | King | 24000 | United States of America | Americas |
内容的提问来源于stack exchange,提问作者Somisan
相关产品推荐
相关产品推荐

