在PL/SQL或SQL中使用循环终止oracle会话

在PL/SQL或SQL中使用循环终止oracle会话,sql,oracle,plsql,oracle10g,oracle11g,Sql,Oracle,Plsql,Oracle10g,Oracle11g,我们有这样的疑问: ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE; 我需要终止所有具有相同SQL ID的会话 我不确定如何将事物连接在一起,但到目前为止,我有以下几点: for rec in (SELECT se.sid,ss.serial# FROM v$session ss, v$sesstat se, v$statname sn WHERE se.statistic# = sn

我们有这样的疑问:

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
我需要终止所有具有相同SQL ID的会话

我不确定如何将事物连接在一起,但到目前为止,我有以下几点:

for rec in (SELECT se.sid,ss.serial# 
              FROM v$session ss, v$sesstat se, v$statname sn 
             WHERE se.statistic# = sn.statistic# 
               AND name like '%CPU used by this session%' 
               AND se.sid = ss.sid 
               AND ss.status = 'ACTIVE' 
               AND ss.username is not null 
               AND ss.sql_id ='f7frew3erwe'
             ORDER BY value ASC) loop
  ALTER SYSTEM KILL SESSION 'rec.sid,rec.serial#' IMMEDIATE; //this is the tricky part!
end loop;

有什么建议吗?

问题类似于,但不是针对所有课程

要更改PL/SQL块中的系统,需要使用:

execute immediate 'Alter System Kill Session '''|| rec.Sid  
                       || ',' || rec.Serial# || ''' IMMEDIATE';
我询问您是否需要使用所有其他系统表。如果您只想杀死一个特定的
SQL\u ID
,那么下面的查询就足够了:

SELECT se.sid,ss.serial# 
  FROM v$session
 WHERE status = 'ACTIVE' 
   AND username is not null 
   AND sql_id ='f7frew3erwe'

可能的复制品,但不完全相同。最上面的答案应该给你所有你需要完成的信息。从您的代码中,您只需要查询
v$session
以及…似乎很完美:-)谢谢,我将如何处理这个问题?如何回答?让@Ben将他的评论作为答案发布。。。