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;

 

 

注意!

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



 
粤ICP备14056181号  © 2014-2021 ITdaan.com