CONVERT

此接口将锁定从一种模式转换为另一种模式。

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

语法

DBMS_LOCK.CONVERT(
    id         IN INTEGER || lockhandle IN VARCHAR2,
    lockmode   IN INTEGER,
    timeout    IN NUMBER DEFAULT MAXWAIT)
RETURN INTEGER;

结构

参数 模式 说明
id or lockhandle IN 用户分配的锁标识符,或ALLOCATE_UNIQUE返回的锁句柄
lockmode IN 将要分配给锁的新模式
timeout IN 如果无法在timeout秒内转换锁,则调用将返回值1

返回值

返回值 说明
0 成功
1 超时
2 发生死锁
3 无效的参数
4 还未持有指定的锁
8 其他错误,比如,无效的句柄

注解

  • 不支持将锁转换为NL_MODE模式。

示例

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

/