ALLOCATE_UNIQUE

此接口为锁分配唯一的锁标识,用户程序可以通过锁名称得到锁句柄。

对于某个lockname,若第一次调用ALLOCATE_UNIQUE将为该锁生成唯一的锁标识,并将其存储在dbms_lock_allocated表中。对于同一锁名,再次调用ALLOCATE_UNIQUE将返回先前生成的锁ID。

语法

DBMS_LOCK.ALLOCATE_UNIQUE (
    lockname         IN  VARCHAR2,
    lockhandle       OUT VARCHAR2,
    expiration_secs  IN  INTEGER   DEFAULT 864000);

结构

参数 模式 说明
lockname IN 锁名称
lockhandle OUT 返回生成的锁ID的句柄。可以在REQUEST,CONVERT和RELEASE调用中使用此句柄。
expiration_secs IN 在对给定的锁执行了最后一次ALLOCATE_UNIQUE之后,超出expiration_secs秒,才允许从DBMS_LOCK_ALLOCATED表中删除该锁。 默认的保留时间为10天。

注解

lockhandle的大小不能小于varchar2(23)。

示例

DECLARE
    V_LOCK_HOLDER VARCHAR2(128);
BEGIN
    DBMS_LOCK.ALLOCATE_UNIQUE('lockA', V_LOCK_HOLDER, 3600);
    DBMS_OUTPUT.PUT_LINE(V_LOCK_HOLDER);
END;

/