oracle存储过程笔记

  • Post author:
  • Post category:其他



存储过程:

是在大型


数据库系统


中,一组为了完成特定功能的SQL 语句集,

存储在数据库中,经过第一次编译后再次调用不需要再次编译,

用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程,

类似于java的方法。

优点

1.效率高

存储过程编译一次后,就会存到数据库,每次调用时都直接执行。而普通的sql语句我们要保存到其他地方(例如:记事本  上),都要先分析编译才会执行。所以想对而言存储过程效率更高。

2.降低网络流量

存储过程编译好会放在数据库,我们在远程调用时,不会传输大量的字符串类型的sql语句。

3.复用性高

存储过程往往是针对一个特定的功能编写的,当再需要完成这个特定的功能时,可以再次调用该存储过程。

4.可维护性高

当功能要求发生小的变化时,修改之前的存储过程比较容易,花费精力少。

5.安全性高

完成某个特定功能的存储过程一般只有特定的用户可以使用,具有使用身份限制,更安全。

存储过程语法

1  CREATE OR REPLACE PROCEDURE 存储过程名

2  IS

3  BEGIN

4  NULL;

5  END;

行1:

CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;

行2:

IS关键词表明后面将跟随一个PL/SQL体。

行3:

BEGIN关键词表明PL/SQL体的开始。

行4:

NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;

行5:

END关键词表明PL/SQL体的结束

简单案例

CREATE OR REPLACE PROCEDURE 存储过程名称(

s_no in varchar,

s_name out varchar,

s_age number) AS

total NUMBER := 0;

BEGIN

SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age;

dbms_output.put_line(‘符合该年龄的学生有’||total||’人’);

EXCEPTION

WHEN too_many_rows THEN

DBMS_OUTPUT.PUT_LINE(‘返回值多于1行’);

END


create or replace procedure runbyparmeters




(isal


in


emp.sal%type,




sname


out


varchar,




sjob


in


out


varchar)




as




icount number;




begin




select


count(*)


into


icount


from


emp


where


sal>isal and job=sjob;




if


icount=1 then




....




else




....




end


if


;


exception




when too_many_rows then




DBMS_OUTPUT.PUT_LINE(


'返回值多于1行'


);




when others then




DBMS_OUTPUT.PUT_LINE(


'在RUNBYPARMETERS过程中出错!'


);


end;



版权声明:本文为weixin_45462385原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。