点击(此处)折叠或打开
- --函数案例
- --输入雇员的姓名,返回该雇员的年薪
- create function sp_fun1(spName varchar2)return
- number is
- yearSal number(7,2);
- begin
- --执行部分
- select sal*12+nvl(comm,0)*12 into yearSal from emp
- where ename=spName;
- return yearSal;
- end;
在pl/sql中调用函数:
点击(此处)折叠或打开
- var income number;
- call sp_fun1('SCOTT') into:income;
--创建包
点击(此处)折叠或打开
- create package sp_package is
- procedure update_sal(name varchar2,newsal number);
- function annual_income(name varchar2) return number;
- end;
--创建包体
点击(此处)折叠或打开
- create package body sp_package is
- procedure update_sal(name varchar2,newsal number)
- is
- begin
- update emp set sal=newsal where ename =name;
- end;
- function annual_income(name varchar2)
- return number is
- annual_salary number;
- begin
- select sal*12+nvl(comm,0)*12 into annual_salary from emp
- where ename=name;
- return annual_salary;
- end;
- end;
--调用包
点击(此处)折叠或打开
- exec sp_package.update_sal('SCOTT',1200);
--下面以输入员工号,显示雇员姓名、工资、个人所得税
--(税率为0.03)为例。说明变量的使用,看看如何编写。
--(税率为0.03)为例。说明变量的使用,看看如何编写。
点击(此处)折叠或打开
- declare
- c_tax_rate number(3,2):=0.03;
- --v_name varchar2(5);
- v_name emp.ename%type;
- v_sal number(7,2);
- v_tax_sal number(7,2);
- begin
- --执行
- select ename,sal into v_name,v_sal from emp where empno=&no;
- --计算所得税
- v_tax_sal:=v_sal*c_tax_rate;
- --输出
- dbms_output.put_line('姓名是:'||v_name||'工资:'||v_sal||'交税:'||v_tax_sal);
- end;
--请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有的工资和员工姓名
点击(此处)折叠或打开
- declare
- --定义游标类型sp_emp_cursor
- type sp_emp_cursor is ref cursor;
- --定义一个游标变量
- test_cursor sp_emp_cursor;
- --定义变量
- v_ename emp.ename%type;
- v_sal emp.sal%type;
- begin
- --执行
- --把test_cursor和一个select结合
- open test_cursor for select ename,sal from emp where deptno=&no;
- --循环取出
- loop
- fetch test_cursor into v_ename,v_sal;
- --判断是否test_cursor为空
- exit when test_cursor%notfound;
- dbms_output.put_line('名字:'||v_ename||' 工资:'||v_sal);
- end loop;
- end;
附件: