我需要帮助在Oracle DB 11g中创建手动用户身份验证。
包含授权用户名的单独表格。如果用户不在桌子中,他将会收到一条消息,说明“您未获得授权”等信息。
这是我创建的函数,用于根据ref table中的用户名存在获取返回代码:
create or replace function user_check return integer is
user_name varchar2(10);
cursor usr is select * from user_ref;
begin
select USERNAME into user_name
from v$session where audsid = sys_context('userenv','sessionid');
for u in usr loop
if u.user_name = user_name then
return 1;
goto out_of_loop;
end if;
end loop;
return 0;
<<out_of_loop>>
null;
end;
/
我正在尝试创建一个触发器:
create or replace trigger user_verify_trg after logon on database
declare
sid varchar2(10);
serial varchar2(10);
q varchar2(100);
begin
if(gs.user_check = 1) then
select SID, serial# into sid,serial
from v$session where audsid = sys_context('userenv','sessionid');
q := 'alter system kill session '||sid||','||serial;
execute immediate q;
end if;
end;
/
但它不起作用。请帮忙。