关闭

PL/SQL程序之存储过程和存储函数

标签: 存储functionsql数据库c
2847人阅读 评论(0) 收藏 举报

存储过程和存储函数
指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
创建存储过程:
用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


3
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:397587次
    • 积分:5891
    • 等级:
    • 排名:第4329名
    • 原创:210篇
    • 转载:15篇
    • 译文:0篇
    • 评论:38条
    文章分类
    最新评论