数据库我爱编程

Oracle存储过程与存储函数-入门

2016-12-14  本文已影响623人  GuangHui
文章思维导图
一. 存储过程和存储函数的定义
二. 存储过程
1. 创建和使用存储过程

create procedure命令建立存储过程,语法如下:

create [or replace] procedure 过程名(参数列表)
as   -- as不可以省略
PLSQL子程序体;

注意事项:
1> 存储过程或者存储函数,只能创建或者替换。
2> 参数可以带也可以不带。
3> as相当于PLSQL语句中的declare,用来声明变量、游标等,但是不可以省略

2. 入门案例:
(1)不带参数的存储过程:不用带括号
create or replace procedure sayHello
as
begin
   dbms_output.put_line('HelloWorld');
end;
/

调用方式:

SQL> set serveroutput on;
SQL> exec sayHello;
SQL> set serveroutput on;
SQL> call sayHello();
SQL> set serveroutput on;
SQL> begin
         sayHello;
    end;
/
(2)带参数的存储过程:
create or replace procedure addSal(pempno in emp.empno%type)
as
    pename emp.ename%type;
    beforesal emp.sal%type;
    aftersal emp.sal%type;
begin
    select ename,sal into pename,beforesal from emp where empno=pempno;
    aftersal:=beforesal+100;
    update emp set sal=aftersal where empno=pempno; 
    dbms_output.put_line('姓名: '||pename||' 涨前工资:'||beforesal||'涨后工资:'||aftersal);
end;
/
执行代码截图

** 注意事项:**

3. 调试存储过程:
SQL Developer 调试存储过程

** 注意事项:**
(1) oracle数据库和PLSQL工具都是放在同一个机器上;
(2) 在开启调试时,可能会报出权限不够的错误信息,通过下面方式进行授权:

授权
三. 存储函数
1. 存储函数:
2. 创建存储函数的语法:
create [or replace] function 函数名(参数列表)
return 函数值类型
as
PLSQL子程序体;
create or replace function queryempannal(pempno in number)
return number
as
  psal emp.sal%type;
  pcomm emp.comm%type;
begin
  select sal,comm into psal,pcomm from emp where empno=pempno;
  return psal*12+nvl(pcomm,0);
end;
四. in和out参数
1.概述
create or replace procedure queryempinform(eno in number,
                                           pename out varchar2,
                                           psal out number,
                                           pjob out varchar2 )
as
begin
  select ename,sal,job into pename,psal,pjob from emp where empno=eno;
end;
/

上一篇 下一篇

猜你喜欢

热点阅读