En SQL, la condición más frecuente WHERE se relaciona principalmente con el contenido de las filas en las que trabajas.
Por lo tanto, debe calcularse y verificarse para cada fila a la que accedas.
Distinto es el caso (y por eso la llamé ESTÁTICA) de una condición WHERE independiente de las filas a las que accedes.
Lo bueno de esto es que:
Se accede y evalúa solo una vez antes de que cualquier otra cosa ocurra.
Podrías interpretarlo como un tipo de interruptor principal para tu tabla.
En el pasado, esto se utilizaba con frecuencia como un método alternativo a las sencillas reglas para acceder a SQL.
Un uso más complejo es cuando se combina con un procedimiento SQL como el que podemos ver en este sencillo ejemplo:
{ ClassMethod chk(any As %String) As %Boolean [ SqlName = mychk, SqlProc ]
{ set if=$get(any)#2 ;; just a placeholder for a complex condition
break ;; for interactive examination
quit if
} }
y para obtener todas las líneas y comprobarlas solo una vez (!!), ejecutas:
and MYCHK('rcc')=1
De forma diferente, el uso dinámico (con ID) se evaluará para cada línea
- líneas con ID impar
and MYCHK(id)=1
- líneas con ID par
and MYCHK(id)=0
El punto importante es que tienes una alternativa para tu sentencia SQL para pasar tus parámetros específicos a una consulta antes de acceder a cualquier parte de tus datos.
Ya utilicé esto en varias respuestas.
En otro artículo mostraré un caso de uso práctico.