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

原创 2012年03月21日 18:30:53

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


相关文章推荐

SQL中存储过程和函数的标准写法

之前一直用的存储过程,今天忽然又接触到跑算法获取返回值的问题,想到可以用函数,好久没用过一时忘了怎么写,还要现查,于是就记录下来,顺便连存储过程一块啦。 存储过程: CREATE PROC...

PLSQL存储过程及存储函数

1.存储过程与存储函数的区别: 存储过程无返回值,存储函数有返回值。 2.存储过程:demo1: declare    --声明一个记录类型   type emp_record is recor...

存储过程和存储函数的详细区别

存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。     存储过程...

【oracle学习】10.存储过程和存储函数

前言 学习存储过程的前提是,了解PLSQL的语法和编写方式。 需要了解PLSQL,请查看之前的总结。 我们以下的表操作可能会基于以下两张表: 我们创建一个员工表和部门表: 员工信息表 create...

PL/SQL存储函数,存储过程

一.存储过程和存储函数 存储过程和存储函数跟我们知道的表、视图、索引、序列、同义词等一样是我们数据中的对象。 1.1什么是存储过程和存储函数: 指存储在数据库中供所有的用户程序调用的 子程序叫存储...

plsql developer 里写存储过程

--建立测试数据: create table BOOK(编号 number(10),书名 varchar2(20),价格 varchar2(20)) insert into BOOK values(...

值集&快速编码(Lookup_code)

--值集 SELECT ffv.flex_value, ffv.description FROM fnd_flex_values_vl ffv, fnd_flex_value_sets ffs ...

报表XML导出rtf格式,结果在浏览器中打开XML文件。下载rtf文件打开后出现Authentication failed 问题

报表XML导出rtf格式,结果在浏览器中打开XML文件。用360浏览器下载rtf文件打开后出现Authentication failed 问题        直接上问题图:        问题描述:在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PL/SQL程序之存储过程和存储函数
举报原因:
原因补充:

(最多只允许输入30个字)