我想实现一个管理授权给用户的实验,点击客户端的第三方软件进行授权并把授权用户名写入表dbausers,操作完点离开第三方软件会自动从表里删除掉刚授权好的用户,那现在有个问题就是如果客户端突然断电掉,造成无法收回用户权限,那我就要在服务器端写个脚本,把当前对话v$session的用户跟我建立的dbausers里插入的用户名进行比对,如果存在就把它筛选出来.我现在出现的问题是不知道怎么把v$session里的username跟dbausers里的username取个交集....新建立一张表:
create table dbausers(username varchar2(20);那我现在要怎么样查看v$session里的username跟dbauser的username,然后取出他们的交集.测试1:
select * from v$session a left join system.dbausers b
on a.username = b.username;测试2:
select username from v$session
where username in (select username from dbausers);新手上路,请朋友们多多帮忙...谢谢
create table dbausers(username varchar2(20);那我现在要怎么样查看v$session里的username跟dbauser的username,然后取出他们的交集.测试1:
select * from v$session a left join system.dbausers b
on a.username = b.username;测试2:
select username from v$session
where username in (select username from dbausers);新手上路,请朋友们多多帮忙...谢谢
select b.*
from v$session a inner join system.dbausers b
on a.username = b.username;
或者
select b.*
from v$session a ,
system.dbausers b
where a.username = b.username;
测试你给我的第一个提示from v$session a inner join system.dbausers b
*
ERROR 位于第 2 行:
ORA-00933: SQL 命令未正确结束测试第二个提示的是未选定行
用一个相同的别名,就可以用intersect取交集了
select p.username from v$session p intersect select p.username from system.dbausers p;结果:
未选定行
..不知道跟版本是不是有关系...
SQL> create table dbausers as select distinct username from dba_users;Table created.SQL> select b.*
2 from v$session a,
3 dbausers b
4 where a.username = b.username; USERNAME
------------------------------
SCOTTSQL>