问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Oracle 存储过程和函数的区别

发布网友 发布时间:2022-04-21 23:23

我来回答

2个回答

懂视网 时间:2022-04-30 00:58

1.函数

create or replace function get_Destroy_no return varchar2 is
Result varchar2(50);
begin

SELECT max(destroy_no) INTO RESULT FROM t_oms_device_destroy WHERE substr(destroy_no,0,8)= to_char( SYSDATE ,‘yyyymmdd‘);
IF (RESULT =‘‘OR RESULT IS NULL) THEN

RESULT:=(to_char( SYSDATE ,‘yyyymmdd‘)||‘001‘);
else
RESULT:=to_number(RESULT)+1;
END IF;

RETURN( Result);

end get_Destroy_no;

 

2.存储过程

create or replace procedure PROC_DESTROY_DELETE(p_headOid VARCHAR2,p_result OUT VARCHAR2) IS
BEGIN

SELECT status INTO p_result FROM t_oms_device_destroy WHERE OID=p_headOid AND rownum=1;
IF p_result=‘2‘ THEN
BEGIN
RETURN;
END;
END IF;
p_result:=‘1‘;
DELETE FROM t_oms_device_destroy WHERE OID=p_headOid;
UPDATE t_oms_device_regist SET STATUS=‘9‘ , DESTROY_OID=‘‘ WHERE destroy_oid=p_headOid;
COMMIT;
end PROC_DESTROY_DELETE;

 

3.游标存储过程

create or replace procedure PROC_CHECK(Insert_by VARCHAR) IS
v_OID VARCHAR2(36);

begin
declare
--类型定义
cursor c_check
is
select dep_oid,oms_user_oid
from dcjetframework.v_oms_user;
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_check%rowtype;
begin
for c_row in c_check loop
-- dbms_output.put_line(c_row.dep_oid||‘-‘||c_row.oms_user_oid);
v_OID:=sys_guid();
INSERT INTO T_OMS_DEVICE_CHECK(OID,DEPT_OID,User_Oid,INSERT_BY)
VALUES(v_OID,c_row.dep_oid,c_row.oms_user_oid,Insert_by);
INSERT INTO t_oms_device_check_detail(check_oid,device_oid,insert_by)
SELECT v_OID,OID,Insert_by
FROM v_oms_check WHERE Dep_Oid=c_row.dep_oid AND APPLICANT=c_row.oms_user_oid ;
end loop;
COMMIT;
end;

end PROC_CHECK;

oracle存储过程函数

标签:

热心网友 时间:2022-04-29 22:06

Oracle中函数和存储过程仅体现在一个地方:


 函数有返回值,而存储过程没有返回值(当然,两者都可以通过定义out参数来实现返回值)


其实,Oracle函数和存储过程差别很小,对比其他数据库,比如SqlServer:

sqlserver中,函数是不能存在非select的dml语句的,换句话说,函数中,sqlserver是不能出现update、delete、insert等语句的

而Oracle中,是十分自由和宽容的,update、delete、insert等语句都可以出现

但因为Oracle的自由度,会引起其它一些问题:如果使用C#来调用Oracle的函数时,会出现因函数含有update等语句而无法调用,只能换成存储过程或者在函数外再加一层存储过程来实现调用。

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

一、主体不同 1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。二、特点不同 1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。2、存储过程:用...

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

1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure。2.创建存储过程 create [or replace] procedure 存储过程名 [(参数1 类型,参数2 out 类型……)]as 变量名类型;begin 程序代码体 end;示例一:无参无返 create or replace procedure p1 --or repl...

Oracle中存储过程和函数的区别

1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3...

Oracle 存储过程和函数的区别

Oracle中函数和存储过程仅体现在一个地方:函数有返回值,而存储过程没有返回值(当然,两者都可以通过定义out参数来实现返回值)其实,Oracle函数和存储过程差别很小,对比其他数据库,比如SqlServer:sqlserver中,函数是不能存在非select的dml语句的,换句话说,函数中,sqlserver是不能出现update、delete、...

ORACLE存储过程里可以声明过程和函数吗

ORACLE存储过程和函数:1. 返回值的区别:函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别:函数可以在查询语句中直接调用,而存储过程必须单独调用.3.用途:函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或...

oracle中function和procedure是什么意思

oracle中function是函数,而procedure是存储过程。函数:函数用于返回特定数据。执行时得找一个变量接收函数的返回值。语法如下:create or replace function function_name(argu1 [mode1] datatype1,argu2 [mode2] datatype2, ...)return datatypeisbeginend;存储过程:存储过程(Stored Procedure)是在...

oracle 存储过程 begin end

本质上没有区别,都是 PL/SQL 程序,都可以有返回值。最根本的区别是: 存储过程是命令, 而函数是表达式的一部分。比如:select max(NAME) FROM 但是不能 exec max(NAME) 如果此时max是函数。PACKAGE是function,procedure,variables 和sql 语句的组合。package允许多个procedure使用同一个变量和游标。...

如何建立oracle包,如何调用包的过程或是函数

--存储过程 PROCEDURE UPDATE_SAL(NAME VARCHAR2, NEWSAL NUMBER) IS BEGIN UPDATE EMP SET SAL = NEWSAL WHERE ENAME = NAME;COMMIT;END;--函数 FUNCTION ANNUAL_INCOME(NAME VARCHAR2) RETURN NUMBER IS ANNUAL_SALARY NUMBER;BEGIN SELECT SAL * 12 + NVL(COMM, 0) INTO ANNUAL_SALARY FROM ...

oracle的存储过程和包有什么区别,分别在什么情况下使用啊

包包含于过程,这个东西就好比包是一个文件夹,而过程和视图,函数啊什么的都是里面的文件。要是在什么情况下使用的话还真是因人而意,如果包里面有过程的话,直接包名.过程名就可以使用了!

oracle导入dmp后函数、存储过程、视图、触发器有红叉,

原因如下。1、存储过程中存在变量类型会不匹配的情况。2、存储过程中存在变量定义错误。3、存储过程中存在变量使用错误。4、存储过程中存在语法错误。

sql函数和存储过程的区别 数据库存储过程与函数的区别 存储过程和函数有什么区别 存储过程和sql的区别 函数和过程的区别 mysql函数和存储过程 存储过程和函数 存储过程和函数属于 存储过程oracle
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位不服劳动仲裁裁决起诉费用需要支付吗? 离职的时候被要求签订竞业禁止协议,能不能拒绝? win10打印时提示将打印输出另存为怎么办? 为什么有时候打印机会出现打印到文件的情况? 清饨鱼的家常做法大全有哪些? 《三国演义》全部人物 蓝牙耳机能戴在两只耳朵上吗? 征信业务不包括什么 占用cpuLinux查看线程CPU占用情况一步搞定linux如何查看线程 ?茉莉花茶副作用-普洱茶评茶语术 虚拟内存中的“系统管理的大小”和“无分页文件”分别... 两个字的游戏名字,要好听的,霸气的 oracle函数和存储过程有什么区别 如何设置c盘无分页文件 银行卡没有手机预留号码怎么办 虚拟内存设置里有项无分页文件是什么意思?(悬赏20) 什么是无分页文件? 游戏名字女生霸气冷漠二个字有哪些? 为什么我用USB连接电脑 电脑没反应 无分页文件是什么意思 winxp系统如何删除pagefile.sys文件?删除pagefile.... 我绑定银行卡的时候没绑定手机号码怎么办 cad三维转二维图后怎么标注 计算机中的pagefile.sys文件能否删除 办理银行卡没有预留手机号打客服电话能给办理吗? oppo手机在锁屏情况下为什么 自动播放视频 请问,怎么给这个CAD三维图形的圆,标注直径? oppor2017可不可以把gif图调成自动播放 小米卡19元一天一元任性用 你好为什么OPPO手机微信里的小视频不可以自动播放... 农业银行卡办理时没有预留号码!在网上怎么预留?... pagefile.sys怎么删除 oracle中函数和存储过程的区别和联系 C盘设置无分页文件有什么用 开启了USB调试,连接了数据线,还是没反应,该怎么... 虚拟内存设置无分页文件怎么回事 oracle函数和存储过程的区别 两个字的霸气游戏名字 中国银行手机银行没有预留手机号怎么绑卡 oracle数据库中函数和存储过程的区别 无分页文件怎么弄? Oracle中 存储过程,过程和函数有什么区别和联系 usb插入电脑后为什么没有反应? 农行银行卡没预留号码怎么办? 求一个问道五人队伍游戏名,名字只要两个字的,最... oracle函数和存储过程有什么区别,说的细致些最好... 我的C盘中的hiberfil.sys和pagefile.sys这两个文件... 虚拟内存设置无分页文件是怎么回事? 银行卡没预留号码怎么办?能在网上填写预留号码吗? Oracle中存储过程和函数的区别