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;
/