Oracle–Procedure–存储过程

Oracle–Procedure–存储过程一、存储过程简介•存储过程(StoredProcedure)是一组为了完成特定功能的PL/SQL语句块,经编译后存储在数据库中。•存储过程经编译和SQL优化后存储在数据库服务器中,使用时只要调用即可。•存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。•

大家好,欢迎来到IT知识分享网。

一、存储过程简介
• 存储过程(Stored Procedure)是一组为了完成特定功能的PL/SQL语句块,经编译后存储在数据库中。
• 存储过程经编译和SQL优化后存储在数据库服务器中,使用时只要调用即可。
• 存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
• 用户通过指定存储过程的名字给出参数(如果该存储过程带有参数)来执行它。

二、存储过程分类
1)系统存储过程
  • 系统存储过程就是由Oracle预先提供的一组完成特定功能的存储过程,安装完Oracle就有了。
2)自定义存储过程
  • 自定义存储过程就是存在Oracle数据库里由一组PL/SQL语句组成的自定义过程(Procedure)。它可以供其它Oracle自定义存储过程、自定义函数和Job调用或者由客户端程序调用。

三、存储过程语法
• 定义存储过程的语法:
  CREATE [OR REPLACE] PROCEDURE 存储过程名
    [(参数名1 [参数模式] 参数数据类型1,参数名2 [参数模式] 参数数据类型2)]
  IS [AS]
    [变量 [constant] 类型 [默认值]]
  BEGIN
    PL/SQL 语句块;
  EXCEPRTION
异常抛出;
  END 存储过程名;

四、无参存储过程
1)定义无参存储过程
create or replace procedure PrintToday
is
begin
dbms_output.put_line(sysdate);
end;
2)执行无参存储过程
begin
PrintToday();
end;

五、存储过程参数
• 建立存储过程时,既可以指定存储过程的参数,也可以不提供任何参数。
• 存储过程的参数主要有三种类型:输入参数(IN)、输出参数(OUT)、输入输出参数(IN OUT),其中IN用于接收调用环境的输入参数,OUT用于输出数据传递到调用环境,IN OUT不仅要接收数据,而且要输出数据到调用环境。
• 在建立存储过程时,输入参数的IN可以省略。
• 注意:当定义存储过程的参数时,只能指定数据类型,不能指定数据长度。(注:声明变量时才允许指定数据类型&长度)

六、有参存储过程
6.1、带输入参数存储过程
1)定义带输入参数存储过程
create or replace procedure InsertEmp
(
p_empno varchar2,
p_ename varchar2
)
is
begin
insert into emp (empno,ename) values (p_empno,p_ename);
commit;
end;
2)执行带输入参数存储过程
begin
InsertEmp (‘1004′,’Green’);
end;

6.2、带输出参数存储过程
1)定义带输出参数存储过程
create or replace procedure CountEmp
(
p_ename in varchar2,
out_value out number
)
is
begin
select count(1) into out_value from emp where ename=p_ename;
end;
2)执行带输出参数存储过程
declare
out_value number;
begin
CountEmp (‘James’,out_value);
dbms_output.put_line(out_value);
end;

七、维护存储过程
• 修改存储过程:与创建的语法相同,使用REPLACE替换即可。
• 删除存储过程:drop procedure [schema.]过程名

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27710.html

(0)
上一篇 2023-09-19 11:15
下一篇 2023-10-01 14:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信