zoukankan      html  css  js  c++  java
  • 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;
     
  • 相关阅读:
    Redis篇
    MySql篇
    Tomcat篇
    JDK篇
    冒泡排序(算法源码)
    堆排序(源码)
    快速排序(递归及非递归算法源码)
    MongoDB 复制
    MongoDB appendix
    服务器端脚本
  • 原文地址:https://www.cnblogs.com/hph1728390/p/10846705.html
Copyright © 2011-2022 走看看