oracle函数和存储过程有什么区别

1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有

2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.

函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)

参数的返回情况来看:

如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;

从调用情况来看:

如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题.

如果是在过程化语句中调用的话,就要看你要实现什么样的功能。函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等),所以虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。

oracle函数和存储过程最大的区别就在于,函数必须带上一个return返回值,后面跟的是返回值的类型,而存储过程可以不带任何返回值。

另外,存储过程和函数同样支持in,out,in out这三种类型的参数,对应的是分别指明输入性的参数、输出型的参数、输入输出型的参数。也就是说如果我们需要返回多个值,除了可以使用存储过程来实现之外,也可以用函数来实现,方法是你将其中一个用return来返回,其他就指明该数据为out参数就可以了。

Oracle中存储过程和函数都可以返回值,但是函数必须要返回值,并一般只返回一个值,而存储过程则没有这个限制。从一般应用上来看,如果不需要返回值或者需要多个返回值,使用存储过程,如果只用一个返回值,就使用函数,从一般程序员的习惯上来看,这样更符合思维。

还有存储过程的命名最好以proc_打头,函数则是func_打头,变量则应该用v_打头,代码可以考虑缩进,增强可阅读性和美观度!

时间: 2024-08-01 16:16:09

oracle函数和存储过程有什么区别的相关文章

oracle函数及存储过程

1.函数 create or replace function getTableCount(table_name varchar2) return number as begin declare sql_query varchar2(300); t_count number; begin sql_query:='select count(*) from ' || table_name;   //from后面有个空格 execute immediate sql_query into t_count

oracle函数、存储过程、序列

一. 函数 1. c2b函数:clob转blob create or replace function c2b (b in clob default empty_clob()) return blob is res blob; bLen number := dbms_lob.getlength(b); destOffset1 number := 1; srcOffset1 number := 1; amountC integer := dbms_lob.lobmaxsize; blobCsid

oracle函数和存储过程示例

--为了使产生的uuid符合rfc 4122的标准(http://tools.ietf.org/html/rfc4122),例如:a8f662b8-6e7a-13fe-e040-970a437c6bd7--函数CREATE OR REPLACEFUNCTION get_uuidRETURN VARCHARISguid VARCHAR (50);BEGINguid := lower(RAWTOHEX(sys_guid()));RETURNsubstr(guid,1,8)||'-'||substr(

Oracle 函数length和lengthb的区别

- lengthb(string)计算string所占的字节长度 :返回字符串的长度,单位是字节 - length(string)计算string所占的字符长度 :返回字符串的长度,单位是字符 - 单字节字符,LENGTHB和LENGTH是一样的 - Java程序中中文占一个字符,而对应Oracle的Varchar2类型需要占3个字符;Oracle中可以用length('string')=lengthb('string')判断字符串是否含有中文. select length('我') from

oracle中函数和存储过程的区别和联系【转载竹沥半夏】

oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别. 一.存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure. 2.创建存储过程 create [or replace] procedure 存储过程名 [(参数1 类型,参数2 out 类型……)] as

oracle中函数和存储过程的区别和联系

oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别. 一.存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure. 2.创建存储过程 create [or replace] procedure 存储过程名 [(参数1 类型,参数2 out 类型……)] as 变量名 类型:

Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

PL/SQL子程序 包括函数和过程.这里的函数指的是用户自己定义的函数,和系统函数是不同的.子程序一般是完成特定功能的PL/SQL程序块,并且具有一定的通用性,可以被不同的应用程序多次调用.Oracle提供可以把PL/SQL程序存储在数据库中,并可以再任何地方来运行它.这样就叫做存储过程或者是函数.过程和函数的唯一区别就是函数总是向调用者返回数据,而过程则不返回数据. 函数 如果用户要经常执行某些操作,并且需要返回特定的数据,那么就可以将这些操作构造成一个函数. 可以使用SQL语句定义函数. 基

Oracle --存储函数和存储过程

oracle提供可以将pl/sql程序块存储在数据库中,并可以在任何地方运行它,这种pl/sql程序块称为存储过程或函数. 存储过程和函数的区别:函数需要向调用者返回数据,而过程不需要返回数据. 1.创建函数 create or replace function getAllSalary(i_cstmId in t_consumption.csptn_id%type)   return number is   v_sum number; begin   select sum(amount)   

Java,PL/SQL调用 ORACLE存储函数以及存储过程

1.1.1.?准备工作·?创建表? ? --- 创建测试用表 school? ?? ???CREATE TABLE school(? ?? ?? ?? ?ID number,? ?--学校id? ?? ?? ?? ?NAME VARCHAR2(30)? ? ---学校名? ?? ???);? ?? ???--- 添加数据? ?? ???INSERT into school values(1,'北京大学');? ?? ???INSERT into school values(2,'南京大学');?