oracle 锁的应用(DMS_LOCK)
来源:互联网 发布:黑社会 知乎 编辑:程序博客网 时间:2024/06/09 21:01
目的:为了防止多个进程同时调用一个过程
前提:授予用户使用锁的权限:grant execute on dbms_lock to username(apps);
使用:
declare
l_lock_name varchar2(100);--锁的名字(一般是由包名+存储过程名+参数组成)
l_lockhandle varchar2(100);--锁标识
l_lock_output number;
begin
l_lock_name :=g_pkg_name||'.'||g_procedure_name||to_char(p_org_id);--锁的名字
/*
给锁分配唯一的标识
*/
dbms_lock.allocate_unique(lockname=>l_lock_name,
lockhandle=>l_lockhandle);
/*
请求一个锁:
l_lock_output 返回值:0--成功,1--超时,2--死锁,3--参数错误,4--已经分配锁重复申请,5---无效的lock_handle
*/
l_lock_output:=dbms_lock.request(l_lockhandle,
dbms_lock.x_mode,
5,--等待请求锁的时间
FALSE,---COMMIT OR ROLLBACK 是否释放锁,默认FALSE,共享模式下设置true
);
if l_lock_output<>0 then
fnd_file.put_line(fnd_file.log,'主程序正在运行,不能重复提交');
end if;
/*
业务代码
*/
/*
释放锁
*/
l_lock_output:=dbms_lock.release(l_lockhandle);
--exception 也要释放锁
exception when others then
l_lock_output:=dbms_lock.release(l_lockhandle);
end;
- oracle 锁的应用(DMS_LOCK)
- oracle的应用
- oracle dblink 的应用
- Oracle 的简单应用
- oracle dblink 的应用
- Oracle 树的应用
- oracle函数的应用
- oracle包的应用
- oracle dblink 的应用
- Oracle 视图 的应用
- Oracle RowID的应用
- Oracle的简单应用
- oracle的常规应用
- Oracle 事务的应用
- oracle 函数的应用
- Oracle定时器的应用
- oracle游标的应用
- ORACLE的sys_connect_by_path的应用
- 使用 Charles 获取 https 的数据
- C语言中变参函数的实现细节
- cordova media插件
- 深度学习Matlab工具箱代码注释——cnnbp.m
- APP搭建:输入文字,单击显示(Android studio)
- oracle 锁的应用(DMS_LOCK)
- HDU2015偶数求和
- Android关于有些机型拍摄的照片在代码里调用图库照片显示翻转问题
- js操作select option
- org.apache.commons.lang.StringUtils;的时候出错解决方法
- 深度学习Matlab工具箱代码注释——cnnapplygrads.m
- 安卓一键去广告工具
- oracle中pivot和unpivot函数用法举例
- angular1.x + ES6开发风格记录