日期:2014-05-16  浏览次数:20896 次

ORA-01940:cannot drop a user
前台删除用户是通过后台脚本实现的,其实已经实现了这个功能,但是由于反应有点慢导致前台的提示功能报错!应该怎么实现呢?
 ----删除此工程相关表数据
    SELECT DB_USERNAME INTO V_DB_NAME FROM SYS_SEC_PROJECT WHERE PROJECT_ID = p_project_id;
----删除该用户所有回话
   FOR C IN( SELECT count(sid) into v_session_count,username,sid,serial# FROM v\$session WHERE upper(username)=upper(V_DB_NAME))
 LOOP
   EXECUTE IMMEDIATE  'ALTER SYSTEM KILL SESSION '''
                   ||C.SID
   ||','
   ||C.SERIAL#
   ||'''';
 END LOOP;
   EXECUTE IMMEDIATE 'DROP USER ' || v_db_name || ' CASCADE';
   DELETE FROM SYS_SEC_PROJECT A WHERE A.PROJECT_ID = p_project_id;
session ORA-01940

------解决方案--------------------
当前用户不能被删除
------解决方案--------------------
当前有活动会话的用户当然不能删除了啊
------解决方案--------------------
你当前要删除的用户还有会话连接。