oracle ebs 加锁
2024-09-18 20:09:03
DECLARE
-- lock
l_lockname VARCHAR2(100);
l_lockhandle VARCHAR2(200);
l_lock_output NUMBER;
l_locked BOOLEAN := FALSE;
g_pkg_name VARCHAR2(240) := '2345';
g_org_id NUMBER := 112;
BEGIN
/* 定义按何种方式并发(此处为同一个OU不能同时执行)
* lockname类似于定义一个唯一的名字,当并发程序执行时就会去判断是否这个唯一标识已经存在 */
l_lockname := g_pkg_name || '_' || g_org_id;
--根据l_lockname获取唯一标识l_lockhandle
dbms_lock.allocate_unique(lockname => l_lockname,
lockhandle => l_lockhandle); /*用l_lockhandle这个唯一标识去给当前请求加锁
-- Return value:
-- 0 - success
-- 1 - timeout
-- 2 - deadlock
-- 3 - parameter error
-- 4 - already own lock specified by 'id' or 'lockhandle'
-- 5 - illegal lockhandle*/
l_lock_output := dbms_lock.request(l_lockhandle, 6, 60, FALSE); dbms_output.put_line('1 ' || l_lock_output); dbms_lock.allocate_unique(lockname => l_lockname,
lockhandle => l_lockhandle);
l_lock_output := dbms_lock.request(l_lockhandle, 6, 60, FALSE);
dbms_output.put_line('2 ' || l_lock_output);
--此处添加请求的业务逻辑
--dbms_lock.sleep(seconds => 50); /*特别注意的是一定要将lockname释放掉 否则这个并发就永远别想再执行了*/
l_lock_output := dbms_lock.release(l_lockhandle);
dbms_output.put_line('3 ' || l_lock_output);
dbms_lock.allocate_unique(lockname => l_lockname,
lockhandle => l_lockhandle);
l_lock_output := dbms_lock.request(l_lockhandle, 6, 60, FALSE);
dbms_output.put_line('4 ' || l_lock_output);
l_lock_output := dbms_lock.release(l_lockhandle);
dbms_output.put_line('5 ' || l_lock_output);
EXCEPTION
WHEN apps.fnd_api.g_exc_error THEN
IF l_lock_output = 0 THEN
l_lock_output := dbms_lock.release(l_lockhandle);
END IF;
WHEN OTHERS THEN
IF l_lock_output = 0 THEN
l_lock_output := dbms_lock.release(l_lockhandle);
END IF;
END;
最新文章
- Highchart URL
- Cursor use
- Android 下载文件及写入SD卡
- 基础4 Android基础
- Quora的技术探索(转)
- win8 hyper-v 禁用不必卸载虚拟机
- Cloudera Manager安装
- uitextfield动态限制输入的字数-b
- css sprint 生成工具 bg2css
- 关于Jquery.validate.js中动态删除验证remove方法的Bug
- Spring MVC 实现文件的上传和下载 (八)
- Linux下SVN使用
- IDEA上传一个项目到github
- zk特性和场景
- hihocoder第229周:最大连续字母个数
- window.showModalDialog乱码(完美)解决方案
- B2B、B2C、C2C、O2O 和 P2P 的含义
- ASP.NET Web Pages:简介
- MySQL decimal unsigned 更新负数不报错却为0
- time模块,计算时间差