我也不知道阿,CREATE我看到都可以了,就是想看看有没有人能解决,我就是想做一个能够远程断开数据库连接的软件

解决方案 »

  1.   

    Oracle存储过程中不能使用create、alter、drop等dml语句
      

  2.   

    为什么要写到存储过程里面?难道不能写到SQL文件里,然后通过SHELL脚本来调用?
      

  3.   

    Yes , U Can like alter system kill session ......
    many example available online , please check it
      

  4.   

    declare
    str varchar2(50);
    begin
    str:='alter system ...'; 
    execute immediate str;
    end;
    /
    看来需要某特殊权限
      

  5.   

    procedure中是不能編寫像create,alter,drop等dml語句的,
    在pl/sql里面講得很清楚了去看看ocp培訓教材吧
      

  6.   

    能不能阿,可是create语句我试过了,完全可以,表都建立成功了
    我要写的是
    ALTER SYSTEM KILL SESSION '9,9'这样的语句
    龙飞虎能不能帮我答,beckhambobo你的方法可以解决create但是我用alter system 就不可以
    说什么"丢失或无效的会话id"
      

  7.   

    以sys用户身份创建下面的procedure,执行即可杀scott用户进程,其他的你就发挥吧CREATE OR REPLACE PROCEDURE Kill_Sessions 
      IS 
    Stmt_Str       VARCHAR2(200); 
    Cur_Hdl        INT; 
    Rows_Processed NUMBER; 
    Sid_V          VARCHAR2(30); 
    Serial#_V      VARCHAR2(30); 
             Username_V     VARCAHR2(30);
    Users_V        VARCHAR2(100) := 'SCOTT'; 
    CURSOR pri IS 
    SELECT Sid, Serial#, Username 
    FROM V$Session 
    WHERE Username Is Not Null 
     And Username = Users_V 
                       And Status Not In ('KILLED','SNIPED'); 
    BEGIN 
    FOR Usr In Pri 
     LOOP 
    Sid_v          := Usr.Sid; 
    Serial#_V      := Usr.Serial#; 
    Stmt_Str       := 'ALTER SYSTEM KILL SESSION ''' || Sid_V || ',' || Serial#_V || ''''; 
    Cur_Hdl        := Dbms_Sql.Open_Cursor; 
    Dbms_Sql.parse(Cur_Hdl, Stmt_Str, Dbms_Sql.Native); 
    Rows_Processed := dbms_sql.execute(Cur_Hdl); 
    Dbms_Sql.Close_Cursor(Cur_Hdl); 
     END LOOP; 
             Commit; 
    END;
      

  8.   

    sys用户执行SQL> execute kill_sessions;PL/SQL procedure successfully completed.