es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Evaluar una cadena como condición en Oracle.

Por ejemplo, si tengo una cadena como:

my_string := ” ”a” = ”a” and 1 > 0 ‘

Puedo evaluarla haciendo algo como esto en un procedimiento/función:

execute immediate ”select CASE WHEN(‘ || my_string || ‘) THEN 1 ELSE 0 END from dual’

Pero, ¿hay una manera de hacerlo sin usar execute immediate? ¿Hay una manera de evaluar una cadena como si estuviera escrita en una consulta?

Quiero hacer esto porque tengo condiciones genéricas en una tabla como “COD1 like ‘%x%’ OR COD2 = ‘Z'”. Así que hago algunas sustituciones con estas cadenas, pero luego me gustaría tenerlas evaluadas con la restricción de no usar una función definida por el usuario, así que no “execute immediate”.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hasta donde tengo entendido, no existe otra forma de evaluar una cadena como si hubiera sido escrita en una consulta sin utilizar execute immediate ni una función definida por el usuario. La razón de esto es que SQL es un lenguaje declarativo, lo que significa que requiere la especificación de lo que debe hacerse, pero no necesariamente cómo debe hacerse. Por lo tanto, el motor de SQL necesita analizar la consulta y optimizarla para su ejecución, algo que no se puede hacer con una cadena común.

    En su caso, podría considerar el uso de una función definida por el usuario para evaluar las condiciones, lo que le permitiría reutilizar la lógica en varias consultas. Sin embargo, si absolutamente necesita evitar el uso de una función definida por el usuario, puede que tenga que considerar un enfoque diferente por completo, como la reorganización de sus datos o el uso de un tipo diferente de consulta.

Comments are closed.