oracle的存储函数
函数就是函数,跟你用的oracle 内置函数是一样的,带参数或者不带参数,返回一个结果
创建语句 create or replace funtion (……)
存储过程一边是处理比较复杂的处理逻辑或者机械化调用等
创建语句 CREATE OR REPLACE PROCEDURE(……)
他俩是不同的东西,存储可以调用函数,
‘贰’ oracle中函数和存储过程的区别和联系
函数有1个返回值,而存储过程可以有多个或者没有。
函数可以在其他语句中直接调用,而存储过程必须单独调用。
函数通常用于计算或较为单一的数据功能,存储过程相对完成更复杂的复合性的数据功能。
最关键普通语句每次执行都要编译,而存储过程只在创建时编译之后直接调用,速度更快,在大数据复杂功能时尤其明显。
存储过程还可以指定用户权限。
‘叁’ oracle 怎么执行存储过程跟函数
调用oracle存储过程用begin...end的方式。
基本语法:
begin
存储过程名(参数1,参数2……);--如果无参数则省略括号及括号内部分end;
如,有存储过程:
create
or
replace
procere
p_testasv_begintime
varchar2(20);v_endtime
varchar2(20);v_str
varchar2(10);begin
v_begintime:=to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss');
select
'badkano'
into
v_str
from
al;
v_endtime:=to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss');
dbms_output.put_line('开始时间为:'||v_begintime);
dbms_output.put_line('结束时间为:'||v_endtime);end;
执行:begin
p_test;end;
‘肆’ oracle函数和存储过程有什么区别
一、主体不同
1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。
2、存储过程:是在大型数据库系统中,一组为了完成特定功能的sql 语句集,存储在数据库中,一次编译后永久有效。
二、特点不同
1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。
2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
三、功能不同
1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的操作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。
2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。
‘伍’ oracle中的存储过程与函数
函数是有返回值的,存储过程没有。
在BODY中的话,一般函数都是SELECT语句,而存储过程是包括DML语句的。
‘陆’ oracle中定义存储过程和函数,到底有什么用
函数一般都是对数据的简单处理,可以方便复用。
举个简单例子,
比如要对一个数字N做比较复杂的运算,而且需要多次使用,那么建立函数get_N(number);
在每次需要这个结果的时候都可以调用函数来处理
比如 select get_N(n) from al;
而不需要每次都把整个计算过程都做一次。
存储过程主要是处理一些复杂的业务,比如一个生成订单的过程,我需要记录订单表,日志表,更新客户信息表,更新客户积分等等的操作。
那可以把这些操作都放在一个存储过程中实现。
每次生成订单,只需要通过程序调用一下存储过程就可以了。而不需要通过程序去多次链接数据库,每次执行对一个表的操作。
‘柒’ Oracle 存储过程和函数的区别
Oracle中函数和存储过程仅体现在一个地方:
函数有返回值,而存储过程没有返回值(当然,两者都可以通过定义out参数来实现返回值)
其实,Oracle函数和存储过程差别很小,对比其他数据库,比如SqlServer:
sqlserver中,函数是不能存在非select的dml语句的,换句话说,函数中,sqlserver是不能出现update、delete、insert等语句的
而Oracle中,是十分自由和宽容的,update、delete、insert等语句都可以出现
但因为Oracle的自由度,会引起其它一些问题:如果使用C#来调用Oracle的函数时,会出现因函数含有update等语句而无法调用,只能换成存储过程或者在函数外再加一层存储过程来实现调用。
‘捌’ oracle存储过程与函数题目
函数和存储过程的区别
从参数的返回情况来看:
如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;
从调用情况来看:
如果在sql语句(dml或select)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,你可以参考《oracle9ipl\sql程序设计》(机械工业出版社);
如果是在过程化语句中调用的话,就要看你要实现什么样的功能。函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些ddl语句等等),所以虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。
‘玖’ Oracle中存储过程和函数的区别
函数有返回值,而过程没有,
简单点就是
function test_f (parameter in varchar2) return varchar2;
procdrue test_p (parameter in varchar2);
declare
result varchar2;
begin
result := test_f; --函数有返回值 必须用变量去装载
test_p; --过程没有可直接调用.
end;