CREATE OR REPLACE PROCEDURE SYSDBA.USER_SP_CLOSE_SESSION(USER_SESS_ID BIGINT)
AS
USERNAME VARCHAR;
BEGIN
--进行用户判断,是否会话为当前用户创建,是则清理
SELECT USER_NAME INTO USERNAME FROM V$SESSIONS WHERE SESS_ID =USER_SESS_ID;
IF USERNAME=USER THEN
SP_CLOSE_SESSION(USER_SESS_ID);
ELSE
--若传入非当前用户会话,则提示会话与用户不符,避免普通用户权限过大
RAISE_APPLICATION_ERROR('-23456','会话 '||USER_SESS_ID||' 所属用户为'||USERNAME||',非'||USER||'用户,仅可清理当前用户会话');
END IF;
END;
--创建同义词,赋予执行权限
CREATE SYNONYM DMDBA.USER_SP_CLOSE_SESSION FOR "SYSDBA"."USER_SP_CLOSE_SESSION";
GRANT EXECUTE ON SYSDBA.USER_SP_CLOSE_SESSION TO DMDBA;
文章
阅读量
获赞
