Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/05/2009, 06:46
javi_cassi
 
Fecha de Ingreso: enero-2008
Mensajes: 268
Antigüedad: 16 años, 10 meses
Puntos: 11
Respuesta: ¿Que hacer con DBLink inactivo?

Mmmmmmmm....

Dos cositas (una de ellas no se me había ocurrdio el otr dia)

1.- Estás usando un select count, por lo tanto tendrás qeu trabajar con la variable qeu te devuelve esto. Si elTEXTLINK es cero quiere decir que no ha podido conectarse. La variable te devolverá 1 si la conexion ha sido positiva
Por lo tanto el codigo es el siguiente.

Cita:
BEGIN
SELECT COUNT(1) INTO testlink FROM DUAL@dblink;

if textlink>0 then
INSERT INTO tabla@dblink (campo1,campo2) VALUES (valor1, valor2);
end if;

EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('caca');
-- este error NUNCA te va a saltar cuando uses un COUNT, ya que si no encuentra nada, el count te devuelve 0, y no nulo. Por lo tanto esta excepcion no hace falta
END;
- La otra opcion es controlar el error que te devuelve la aplicacion al no poder conectarse con el dblink. Es decir:


Cita:
BEGIN

INSERT INTO tabla@dblink (campo1,campo2) VALUES (valor1, valor2);

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('Erro con el dblink');
-- Nota. Lo suyo es que en vez de controlar la excepcion con el OTHERS (que lo que hace es controlarte cualquier excepcion, controles exactamente la que se te está produciendo
END;

Usando cualquiera de estas dos formas, solucionarás tu problema.
Ya nos cuentas.

saludos