有两台机器A,B,B上有数据库和存储过程,我想在A上连到B,调用存储过程,但这个存储过程运行时间比较长,我不想A和B一直连着等运行完再断掉,我想调用完存储过程后就断掉连接,让存储过程自己跑,请问怎么可以实现,感谢啊

解决方案 »

  1.   

    linux/unix的话,就写一个脚本调存储过程
    #! /bin/sh
    sqlplus -S username/password@dbname<<!
    set heading off
    set serveroutput on
    set feedback off
    spool procname.log
    $procname;
    end;
    !
    nohup调用这个命令。如果b都是windows的话,远程登录就可以了吧
      

  2.   

    非常感谢,B机器是UNIX,我的想能不能不通过脚本,通过数据库内部触发器之类的什么的调用存储过程再让它自己跑,请问可以实现吗
      

  3.   

    你直接在B上建一个JOB运行就是了。。
      

  4.   

    在oracle上创建job的示例,可以参考下。--每天早上7点执行一次
    DECLARE
                job_id NUMBER;
             BEGIN
                DBMS_JOB.SUBMIT
                ( job => job_id 
                   ,what => 'prc_name;'
                   ,next_date => to_date('2011-06-01 15:47:00','yyyy-mm-dd hh24:mi:ss')
                   ,interval => 'trunc(sysdate+1)+(7/24)'
                );
                    SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(job_id ));
                   COMMIT;
    END;
    /