REQUEST

此接口请求获取给定模式的锁。

REQUEST是一个重载函数,它接受用户定义的锁标识或ALLOCATE_UNIQUE返回的锁句柄。

语法

DBMS_LOCK.REQUEST(
     id                 IN  INTEGER || lockhandle IN VARCHAR2,
     lockmode           IN  INTEGER DEFAULT X_MODE,
     timeout            IN  INTEGER DEFAULT MAXWAIT,
     release_on_commit  IN  BOOLEAN DEFAULT FALSE)
RETURN INTEGER;

结构

参数 模式 说明
id or lockhandle IN 用户分配的锁标识符,或ALLOCATE_UNIQUE返回的锁句柄
lockmode IN 将要分配给锁的新模式
timeout IN 如果无法在timeout秒内转换锁,则调用将返回值1
release_on_commit IN 将此参数设置为TRUE,将在事务提交或回滚时自动释放该锁。 否则,该锁将一直保留到显式释放该锁或session结束为止。

返回值

返回值 说明
0 成功
1 超时
2 发生死锁
3 无效的参数
4 使用此id或锁柄的锁已存在
8 其他错误,比如,无效的句柄

示例

DECLARE
    v_result NUMBER ;
    V_LOCK_HOLDER VARCHAR2(128);
BEGIN
    DBMS_LOCK.ALLOCATE_UNIQUE('lockA', V_LOCK_HOLDER, 3600);
    v_result:= DBMS_LOCK.REQUEST(V_LOCK_HOLDER ,DBMS_LOCK.S_MODE, 100, TRUE);
    dbms_output.put_line(v_result);
END;

/