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;

最新文章

  1. Highchart URL
  2. Cursor use
  3. Android 下载文件及写入SD卡
  4. 基础4 Android基础
  5. Quora的技术探索(转)
  6. win8 hyper-v 禁用不必卸载虚拟机
  7. Cloudera Manager安装
  8. uitextfield动态限制输入的字数-b
  9. css sprint 生成工具 bg2css
  10. 关于Jquery.validate.js中动态删除验证remove方法的Bug
  11. Spring MVC 实现文件的上传和下载 (八)
  12. Linux下SVN使用
  13. IDEA上传一个项目到github
  14. zk特性和场景
  15. hihocoder第229周:最大连续字母个数
  16. window.showModalDialog乱码(完美)解决方案
  17. B2B、B2C、C2C、O2O 和 P2P 的含义
  18. ASP.NET Web Pages:简介
  19. MySQL decimal unsigned 更新负数不报错却为0
  20. time模块,计算时间差

热门文章

  1. 有趣的python库-turtle
  2. 解决veture和eslint冲突的问题
  3. 基于C++的OpenGL 06 之摄像机
  4. PostgreSQL数据库切割和组合字段函数
  5. window 0x00007b无法正常启动解决方法
  6. Ubuntu安装系统监视器system-monitor并显示在状态栏(火狐浏览器)
  7. Windows 11在使用AMD时,CPU占用率持续100%的解决方案
  8. 虚拟机中 Linux 提示“设备上没有空间”,扩容磁盘
  9. loader的原理
  10. iOS 绘制虚线