Ver Mensaje Individual
  #1  
Antiguo 20-07-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Reputación: 0
Tino Va por buen camino
Evaluar condiciones con Oracle PL/SQL

Tengo la tarea de evaluar una condición lógica del tipo:

Código:
('PLATÓN'='FILÓSOFO') OR (3 <> 5) AND NOT (2/3/2004 < 1/1/2005) ...
Para ello, he escrito la sig. rútina:

Código SQL [-]
FUNCTION Fu_Evalua_Condicion(p_condicion IN VARCHAR2) RETURN BOOLEAN IS
-- Evalua la condición pasada como parámetro
   vSQL VARCHAR2(300);
   vDummy VARCHAR2(1);
BEGIN 
   vSQL := 'SELECT ''X'' FROM DUAL WHERE ' || p_condicion;
   BEGIN 
     EXECUTE IMMEDIATE vSQL INTO vDummy;
     If vDummy = 'X' Then
        RETURN TRUE;
     Else
        RETURN FALSE;
     End If;
   EXCEPTION
     WHEN OTHERS THEN RETURN FALSE;
   END;   
END Fu_Evalua_Condicion;


¿Cabe una mejor solución? El rendimiento es crítico porque esta rútina será llamada muchas veces, pero no se me ocurre otra manera.

Agradezco de antemano cualquier comentario que hagaís.
Responder Con Cita