在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点。刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别。
一、存储过程
1.定义
存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure。
2.创建存储过程
create [or replace] procedure 存储过程名
[(参数1 类型,参数2 out 类型……)]
as
变量名 类型;
begin
程序代码体
end;
示例一:无参无返
create or replace procedure p1 --or replace代表创建该存储过程时,若存储名存在,则替换原存储过程,重新创建 --无参数列表时,不需要写() as begin dbms_output.put_line('hello world'); end; --执行存储过程方式1 set serveroutput on; begin p1(); end; --执行存储过程方式2 set serveroutput on; execute p1();
示例二:有参有返
create or replace procedure p2 (name in varchar2,age int,msg out varchar2) --参数列表中,声明变量类型时切记不能写大小,只写类型名即可,例如参数列表中的name变量的声明 --参数列表中,输入参数用in表示,输出参数用out表示,不写时默认为输入参数。 ------------输入参数不能携带值出去,输出参数不能携带值进来,当既想携带值进来,又想携带值出去,可以用in out as begin msg:='姓名'||name||',年龄'||age; --赋值时除了可以使用:=,还可以用into来实现 --上面子句等价于select '姓名'||name||',年龄'||age into msg from dual; end; --执行存储过程 set serveroutput on; declare msg varchar2(100); begin p2('张三',23,msg); dbms_output.put_line(msg); end;
示例三:参数列表中有in out参数
create or replace procedure p3 (msg in out varchar2) --当既想携带值进来,又想携带值出去,可以用in out as begin dbms_output.put_line(msg); --输出的为携带进来的值 msg:='我是从存储过程中携带出来的值'; end; --执行存储过程 set serveroutput on; declare msg varchar2(100):='我是从携带进去的值'; begin p3(msg); dbms_output.put_line(msg); end;
示例四:存储过程中定义参数
create or replace procedure p4 as --存储过程中定义的参数列表 name varchar(50); begin name := 'hello world'; dbms_output.put_line(name); end; ---执行存储过程 set serveroutput on; execute p4();
总结:1.创建存储过程的关键字为procedure。
2.传参列表中的参数可以用in,out,in out修饰,参数类型一定不能写大小。列表中可以有多个输入输出参数。
3.存储过程中定义的参数列表不需要用declare声明,声明参数类型时需要写大小的一定要带上大小。
4.as可以用is替换。
5.调用带输出参数的过程必须要声明变量来接收输出参数值。
6.执行存储过程有两种方式,一种是使用execute,另一种是用begin和end包住。
存储过程虽然有很多优点,但是它却不能使用return返回值。当需要使用return返回值时,我们可以使用函数。
二、存储函数
1.函数与存储过程的结构类似,但是函数必须有一个return子句,用于返回函数值。
create or replace function f1 return varchar--必须有返回值,且声明返回值类型时不需要加大小 as msg varchar(50); begin msg := 'hello world'; return msg; end; --执行函数方式1 select f1() from dual; --执行函数方式2 set serveroutput on; begin dbms_output.put_line(f1()); end;
三、存储过程与存储函数的区别和联系
相同点:1.创建语法结构相似,都可以携带多个传入参数和传出参数。
2.都是一次编译,多次执行。
不同点:1.存储过程定义关键字用procedure,函数定义用function。
2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。
3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。
总结:如果只有一个返回值,用存储函数,否则,一般用存储过程。
相关推荐
oracle笔记存储函数和存储过程,有具体的代码案例!存储函数和存储过程的知识笔记!
调用Oracle函数和存储过程通常涉及以下步骤: 1. **创建函数和存储过程**: 使用SQL的CREATE FUNCTION或CREATE PROCEDURE语句来定义它们。例如: ```sql CREATE OR REPLACE FUNCTION my_function(param1 IN ...
Oracle数据库系统中,函数、存储过程和包是重要的PL/SQL编程元素,它们在数据库管理和应用开发中扮演着核心角色。 1. **函数**: - **系统函数**:Oracle预定义的一系列函数,如SYSDATE获取当前日期,USER获取当前...
在Oracle数据库中,存储过程和函数是重要的编程元素,用于执行复杂的数据库操作和业务逻辑。本篇文章将深入探讨这两个概念,并结合经典的SCOTT库中的EMP表进行实例操作。 **一、Oracle存储过程** 存储过程是一组预...
### Oracle函数调用存储过程详解 #### 背景与目的 在开发Oracle应用程序时,经常需要使用到存储过程和函数。这两种类型的数据库对象各有优势,可以满足不同的业务需求。有时候,为了更好地组织代码和提高复用性,...
### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...
本资源"oracle函数大全及存储过程语法.rar"显然是一个关于Oracle函数和存储过程的详细指南,涵盖了各种常用和高级的函数以及存储过程的编写和使用方法。 一、Oracle函数 Oracle提供了丰富的内置函数,包括数值函数...
在Ibatis中调用Oracle函数和存储过程,你需要以下步骤: 1. **配置映射文件(Mapper XML)**: - 创建一个XML映射文件,定义SQL语句。对于函数,使用`<select>`标签;对于存储过程,使用`<procedure>`标签。 - 在...
在学习和使用Oracle函数和存储过程时,建议从以下几个方面入手: 1. 熟悉基本的SQL语法和操作,这是使用函数和存储过程的前提。 2. 精读Oracle帮助文档,理解每个函数的用法和存储过程的结构。 3. 练习编写简单的...
在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作数据库数据。 ##### 1.1 存储过程 存储过程是一组预先编译...
总结起来,Oracle函数和存储过程是数据库管理和开发中的重要工具,掌握它们的语法和应用对于优化数据库性能、提升开发效率以及保证数据安全具有重要意义。在实际工作中,应根据具体需求灵活运用,以实现更高效、更...
调用Oracle函数的过程与调用存储过程类似,但创建CallableStatement时的SQL语句略有不同。由于函数会返回一个值,所以格式通常是`{? = call function_name(?, ?, ...)}`。在执行后,通过`CallableStatement....
以上内容只是Oracle函数、存储过程和游标的基础介绍。实际应用中,你可能需要结合触发器、异常处理、动态SQL等更高级的概念。通过熟练掌握这些工具,你可以更高效地设计和优化Oracle数据库应用程序。对于初学者,...
Oracle数据库是世界上最广泛使用的数据库系统之一,其...总的来说,Oracle函数和存储过程是数据库开发的核心工具,通过深入学习和实践,你将能够更有效地管理和操作Oracle数据库,提升你的数据库技能和项目实施能力。
本资源包“oracle函数大全与存储过程语法-中文.rar”涵盖了从Oracle 9i到10G版本的函数和存储过程的详细信息,旨在帮助用户深入理解和应用这些关键概念。 1. **Oracle函数大全**: - 函数是预定义的代码块,接受一...
在Oracle数据库开发中,存储过程和函数以及PL/SQL语言是至关重要的组成部分。这篇内容将深入解析这些核心概念。 首先,我们来谈谈“存储过程”。存储过程是一组预编译的SQL语句,可以在数据库中保存并重复调用,以...
### Oracle学习之函数与...通过以上详细介绍,我们可以看到Oracle中的函数和存储过程是非常强大且实用的功能。正确地使用它们能够极大地提升数据库应用程序的性能和灵活性。希望本文能帮助您更好地理解和运用这些概念。