PL/SQL程序之存储过程和存储函数
PL/SQL程序之存储过程和存储函数
- 存储过程和存储函数
- 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
- 创建存储过程:
- 用CREATE PROCEDURE命令建立存储过程和存储函数。
- 语法:
- create [or replace] PROCEDURE 过程名(参数列表)
- AS
- PLSQL子程序体;
- 注:存储过程一般用于高度安全的系统中
- 例一:为所有员工涨10%的工资
- 创建存储过程
- create or replace procedure updateSal
- as
- --plsql程序块
- --存储过程不能有declare
- create or replace procedure updateSal
- as
- cursor c1 is select sal,empno from emp;
- emp_sal emp.sal%type;
- emp_no emp.empno%type;
- begin
- open c1;
- loop
- fetch c1 into emp_sal,emp_no;
- exit when c1%notfound;
- update emp set sal=emp_sal*1.1 where empno=emp_no;
- end loop;
- close c1;
- end;
- 调用存储过程
- 方式一:
- SQL> begin
- 2 updateSal;
- 3 end;
- 4 /
- 方式二:
- SQL> exec updateSal;
- 调用完成后手工提交一下
- 【
- Commit语句:结束当前事务, 使当前事务所执行的全部修改永久化。
- 】
- 存储函数
- 函数(Function)为一命名的存储程序,可带参数,并返回一计算值。函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值。函数说明要指定函数名、结果值的类型,以及参数类型等。
- 建立存储函数的语法:
- CREATE [OR REPLACE] FUNCTION 函数名(参数列表)
- RETURN 函数值类型
- AS
- PLSQL子程序体;
- 例二:获取指定员工的年收入
- create or replace function sumSal(emp_no number)--function(参数的值 必须有类型)
- --返回值类型
- return number--必须有返回值
- as
- --声明变量
- emp_sal emp.sal%type;
- emp_comm emp.comm%type;
- total emp.sal%type;
- begin
- select sal,comm into emp_sal,emp_comm from emp where empno=emp_no;
- total:=emp_sal*12+nvl(emp_comm,0);
- return total;--必须返回 返回值类型一定相同
- end;
- 调用方法
- 方法一:
- SQL> begin
- 2 dbms_output.put_line(sumSal(7369));
- 3 end;
- 4 /
- 方法二:
- declare
- v_sal number;
- begin
- v_sal:=sumSal(7369);
- dbms_output.put_line(v_sal);
- end;
- 结果
- 12777.6
评论暂时关闭