Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1867490
  • 博文数量: 556
  • 博客积分: 11457
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 22:33
文章分类

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: Oracle

2012-03-10 12:07:37


点击(此处)折叠或打开

  1. --函数案例
  2. --输入雇员的姓名,返回该雇员的年薪
  3. create function sp_fun1(spName varchar2)return
  4. number is
  5. yearSal number(7,2);
  6. begin
  7. --执行部分
  8. select sal*12+nvl(comm,0)*12 into yearSal from emp
  9. where ename=spName;
  10. return yearSal;
  11. end;
在pl/sql中调用函数:

点击(此处)折叠或打开

  1. var income number;
  2. call sp_fun1('SCOTT') into:income;
--创建包

点击(此处)折叠或打开

  1. create package sp_package is
  2.    procedure update_sal(name varchar2,newsal number);
  3.    function annual_income(name varchar2) return number;
  4. end;
--创建包体

点击(此处)折叠或打开

  1. create package body sp_package is
  2. procedure update_sal(name varchar2,newsal number)
  3. is
  4. begin
  5. update emp set sal=newsal where ename =name;
  6. end;
  7. function annual_income(name varchar2)
  8. return number is
  9. annual_salary number;
  10. begin
  11. select sal*12+nvl(comm,0)*12 into annual_salary from emp
  12. where ename=name;
  13. return annual_salary;
  14. end;
  15. end;

--调用包

点击(此处)折叠或打开

  1. exec sp_package.update_sal('SCOTT',1200);
--下面以输入员工号,显示雇员姓名、工资、个人所得税
--(税率为0.03)为例。说明变量的使用,看看如何编写。

点击(此处)折叠或打开

  1. declare
  2. c_tax_rate number(3,2):=0.03;
  3. --v_name varchar2(5);

  4. v_name emp.ename%type;
  5. v_sal number(7,2);
  6. v_tax_sal number(7,2);
  7. begin
  8. --执行

  9. select ename,sal into v_name,v_sal from emp where empno=&no;
  10. --计算所得税

  11. v_tax_sal:=v_sal*c_tax_rate;
  12. --输出

  13. dbms_output.put_line('姓名是:'||v_name||'工资:'||v_sal||'交税:'||v_tax_sal);
  14. end;
--请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有的工资和员工姓名

点击(此处)折叠或打开

  1. declare
  2. --定义游标类型sp_emp_cursor

  3. type sp_emp_cursor is ref cursor;
  4. --定义一个游标变量

  5. test_cursor sp_emp_cursor;
  6. --定义变量

  7. v_ename emp.ename%type;
  8. v_sal emp.sal%type;
  9. begin
  10. --执行

  11. --把test_cursor和一个select结合

  12. open test_cursor for select ename,sal from emp where deptno=&no;
  13. --循环取出

  14. loop
  15.    fetch test_cursor into v_ename,v_sal;
  16.    --判断是否test_cursor为空

  17.    exit when test_cursor%notfound;
  18.    dbms_output.put_line('名字:'||v_ename||' 工资:'||v_sal);
  19. end loop;
  20. end;
附件:
阅读(1495) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~