pl/sql 过程 函数(写一个过程,输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金))


1、编写过程,输入三角形三个表的长度。在控制台打印三角形的面积。

create or replace procedure pro_s(v_a number,v_b number,v_c number) is
-- 声明变量
   v_sum number(10,2); begin
  -- 计算三角形的面积
  v_sum:=1/4*sqrt((v_a+v_b+v_c)*(v_a+v_b-v_c)*(v_a+v_c-v_b)*(v_b+v_c-v_a)); -- 打印输出
  dbms_output.put_line('三角形的面积是:'||v_sum); end; -- 调用
call pro_s(3,4,5);

2、编写函数,输入三角形三个表的长度。在控制台打印三角形的面积

create or replace function fun_s(v_a number,v_b number,v_c number)return number is
-- 声明函数
     v_sum number(10,2); begin
  -- 计算圆的面积
     v_sum:=1/4*sqrt((v_a+v_b+v_c)*(v_a+v_b-v_c)*(v_a+v_c-v_b)*(v_b+v_c-v_a)); -- 返回值
     return v_sum; end; declare
-- 声明变量 变量和 function中的 类型相同
     v_sum number(10,2); begin v_sum:=fun_s(3,4,5); dbms_output.put_line('三角形的面是:'||v_sum); end;

3、写一个过程,输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金)

create or replace procedure pro_emp(v_deptno number,v_dname out varchar2, v_count out number,v_vag out number) is
begin
  
    select d.dname,count(e.ename),avg(sal+nvl(comm,0))into v_dname,v_count,v_vag from emp e inner join dept d on e.deptno=d.deptno where e.deptno=v_deptno group by e.deptno,d.dname; end; declare
    ---v_deptno emp.deptno%type;
    v_dname dept.dname%type; v_count emp.deptno%type; v_vag emp.sal%type; begin pro_emp(10,v_dname,v_count ,v_vag); dbms_output.put_line('员工姓名'||v_dname||'总人数'||v_count||'平均值'||v_vag); end; 
4,编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号
create or replace procedure pro_emp3 is type emp_record_type is record( empno emp.empno%type, ename emp.ename%type, sal emp.sal%type, deptno emp.deptno%type ); type emp_table_type is table of emp_record_type index by binary_integer; v_emp emp_table_type; begin
  select empno,ename,sal,deptno bulk collect into v_emp from emp; for v_i in v_emp.first ..v_emp.last loop dbms_output.put_line('员工编号'||v_emp(v_i).empno||
                         '员工姓名'||v_emp(v_i).ename||
                         '基本工资'||v_emp(v_i).sal||
                         '部门编号'||v_emp(v_i).deptno); end loop; end; begin pro_emp3(); end;
 

5、编写一个存储过程,输入一个员工编号,输出该员工的员工编号,员工姓名,部门名称。

 
create or replace procedure pro_emp1(v_empno number,v_emno out number,v_ename out varchar2,v_dname out varchar2)is

begin
  select e.empno,e.ename,d.dname into v_emno,v_ename,v_dname from emp e inner join dept d on d.deptno=e.deptno where empno=v_empno; end; declare v_emno emp.empno%type; v_ename emp.ename%type; v_dname dept.dname%type; --v_deptno emp.deptno%type;
begin pro_emp1(7369,v_emno,v_ename,v_dname) ; dbms_output.put_line('员工编号'||v_emno||'员工姓名'||v_ename||'部门名称'||v_dname); end;
 

6、编写一个存储过程,输出所有员工及其部门领导的姓名、员工号及部门号。

create or replace procedure pro_emp2 is type emp_record_type is record( empno emp.empno%type, ename emp.ename%type, deptno emp.deptno%type, mname emp.ename%type); type emp_table_type is table of emp_record_type index by binary_integer; v_emp emp_table_type; begin
  select e.empno,e.ename,e.deptno,m.ename mname bulk collect into v_emp from emp e inner join emp m on e.empno=m.mgr; for v_i in v_emp.first .. v_emp.last loop dbms_output.put_line('员工编号:'||v_emp(v_i).empno||
                         '员工姓名:'||v_emp(v_i).ename||
                         '领导姓名:'||v_emp(v_i).mname||
                         '部门编号:'||v_emp(v_i).deptno); end loop; end; begin pro_emp2(); end;

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM