Oracle存储过程

  • Orcle储存过程
    • 什么是储存过程
    • 创建和替换储存过程的语法
    • 存储函数
      • Out中使用光标

Orcle储存过程

什么是储存过程

  1. 什么是存储过程,什么是存储函数
    • 指储存在数据库中供所有用户程序调用的子程序叫做储存过程、储存函数
  2. 储存过程和存储函数比较
    • 相同点
      • 都是完成特定功能的程序
    • 区别
      • 是否用return语句返回值(储存函数可以用return)
  3. 怎么创建储存过程

创建和替换储存过程的语法

语法

create [or replace] PROCEDURE 过程名(参数列表) AS PLSQL 子程序体

实例

set serveroutput on
--第一个储存过程 :Hello Word
create or replace procedure sayehelloworld
as
--说明部分
/*
调用存储过程的两种方法
1.exec sayhelloworld()
2.
    begin
    sayehelloworld
    sayehelloworld
    end;
*/
begin
    DBMS_OUTPUT.PUT_LINE('Hello Word');
end;

带参数的储存过程

--创建带参数的储存过程
--给指定的员工涨100块钱
/**
如何调用
begin
    raisealary('a')
commit
end;
*/
create or replace procedure raisealary(eno in char)
as
--定义一个变量保存涨前的薪水
psal a.num%type;
begin
    --得到员工涨前的薪水
    select num into psal from a where id=eno;
    --给员工涨工资
    update a set num=num+100 where num=eno;
-- 一般不再储存过程中提交和回滚
--打印
DBMS_OUTPUT.PUT_LINE('涨前'||psal||'涨后'||psal+100);
end;

存储函数

函数 为一 命名的储存过程,可带参数,并返回一计算值。

函数和过程结构类似,但必须有一个return子句,用于返回函数值。
创建存储函数的语法

create [or replace] function 函数名(参数列表) 
return 函数值类型
AS
pl/sql 子程序体

in和out参数

一般来讲,存储过程和存储函数的区别在于储存函数可以有一个返回值;而存储过程没有返回值。

1、存储过程和存储函数都可以有out参数。2、存储过程和存储函数都可以有多个out参数哦。3、存储过程可以通过out参数来实现返回值。

什么时候用存储过程和存储函数

  • 原则
    • 如果只有一个返回值,用存储函数;否则,就用储存过程。

Out中使用光标

  • 实例
  • 包头
CREATE OR REPLACE 
PACKAGE QUERYCESHI AS 

  type numlistcursor is ref cursor;
  procedure finda(numlist out numlistcursor);

END QUERYCESHI;
  • 包体
CREATE OR REPLACE
PACKAGE BODY QUERYCESHI AS

  procedure finda(numlist out numlistcursor) AS
  BEGIN
    -- TODO: procedure QUERYCESHI.finda所需的实施
     open numlist for select * from A;
    NULL;
  END finda;

END QUERYCESHI;

你可能感兴趣的:(Oracle)