Porque al utilizar una function creada por nosotros muvale.dias:
Si ejecutamos desde el entorno de producción, haciendo referencia a la tabla en producción, FUNCIONA
insert into muvale.proceso select * from muvale.proceso prc where muvale.dias(prc.f_baja , prc.f_alta, sysdate, sysdate) > 0 and anproces = 2011 and nmproces = 1Si ejecutamos desde el entorno de producción, haciendo referencia a la tabla en DESARROLLO (@tasio), NO FUNCIONA?
insert into muvale.proceso@tasio select * from muvale.proceso prc where muvale.dias(prc.f_baja , prc.f_alta, sysdate, sysdate) > 0 and anproces = 2011 and nmproces = 1
Aparece el siguiente mensaje de error ORA-02069 El Parámetro Global_names se debe definir en TRUE para esta operación
He visto que el error surge al utilizar la funcion muvale.dias. Aunque ocurre con cualquier function creado por mí. En cambio si se utilizan funciones propias de oracle, no hay problema
Si quito esta función de la sentencia SQL si funciona
¿Se debe incluir en la funtion algún tipo de sintaxis para indicar que se debe ejecutar entre entornos??
Este es el código de la función
CREATE OR REPLACE FUNCTION muvale."DIAS" (fb DATE, fa DATE, fi DATE, ff DATE) RETURN INTEGER AS k_dias INTEGER; BEGIN /* CALCULA EL NUMERO DE DIAS DE UN PERIODO (fa -> fb) DENTRO DE OTRO (fi -> ff) */ IF ((fb > fa) or (fb > ff) or (fa < fi)) THEN k_dias := 0; ELSE k_dias := 0; IF fb < fi THEN IF fa is not null AND fa <= ff THEN k_dias := fa - fi + 1; ELSE k_dias := ff - fi + 1; END IF; ELSE IF fa is not null AND fa <= ff THEN k_dias := fa - fb + 1; ELSE k_dias := ff - fb + 1; END IF; END IF; END IF; IF k_dias > 30000 THEN k_dias:=0; END IF; RETURN k_dias; END DIAS;- Inicie sesión para enviar comentarios
Creo que el problema lo
Subido por Carlos el 17 Febrero, 2011 - 11:23
Creo que el problema lo tienes con el GLOBAL_NAMES al acceder al dblink en la función. Has probado a activar el GLOBAL_NAMES, como te sugiere el error?
Te enlazo el tema Oracle Global_names, donde se discute su funcionamiento, y cómo activarlo o desactivarlo.
Si ya lo habia probado alter
Subido por sindamsg el 18 Febrero, 2011 - 09:14
En respuesta a Creo que el problema lo por Carlos
Si ya lo habia probado
alter session set global_names = true;
Al hacerlo y ejecutar el Script me aparece el siguiente error
ORA-02019 No se ha encontradola descripción de la conexión para la base de datos remota