Artículo
Ricardo Paiva · Jul 29 Lectura de 2 min

Condiciones WHERE estáticas

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:

Class User.Hack
{ 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:

SELECT id,name,Home_State from sample.person where home_State %startswith 'A'
       and MYCHK('rcc')=1  

De forma diferente, el uso dinámico (con ID) se evaluará para cada línea
- líneas con ID impar 

SELECT id,name,Home_State from sample.person where home_State %startswith 'A'
       and MYCHK(id)=1 

- líneas con ID par

SELECT id,name,Home_State from sample.person where home_State %startswith 'A'
       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.

 

00
2 0 0 46
Log in or sign up to continue