我在用长连接数据库, 连接完从不关闭连接, 连接后进行数据库的操作, 但有时因某些原因数据库的连接状态为断开的, 导致程序运行出错, 有什么办法判断数据库是否连接?

解决方案 »

  1.   

    在你进行其他操作之前,判断conn(连接)是否为空就可以了!在程序里面,如果是空直接抛出异常就可以了
      

  2.   

    declare 
      n_found integer;
    begin
      select count(*) into n_found
      from sys.v_$session
      where TYPE = 'USER' AND  USERNAME = SYS_CONTEXT('USERENV','CURRENT_USER');
      if n_found < 1 then
        RAISE_APPLICATION_ERROR(-20001,'未连接!');
      else
        RAISE_APPLICATION_ERROR(-20002,'已连接!');
      end if;
    end;
      

  3.   

    我的类似情况
    declare 
      n_found integer;
    begin
      select count(*) into n_found
      from sys.v_$session
      where TYPE = 'USER' AND  USERNAME = SYS_CONTEXT('USERENV','CURRENT_USER');
      if n_found < 1 then
        RAISE_APPLICATION_ERROR(-20001,'未连接!');
        只将新记录插入本机数据库
      else
        insert into .....向其他数据库插入新记录
      end if;
    end;只是当数据库的连接状态为断开时,连本地数据库的插入新记录也出错,为什么?
      

  4.   

    当然不行了,你所谓的本机数据库是如何访问的?
    在同一个PLSQL中,如果你的当前会话已经断开,说明你已经与Oracle失去联系,根本不能访问任何数据库。