Consultas que contienen SQL complejo
Escenario
Hay varias formas de consultar datos que no son compatibles con las definiciones de reportes. Un ejemplo es la fórmula de Haversine utilizada en la capa empresarial de FSG dentro de la solución de la aplicación Booking (Reserva). La consulta se encuentra en la pestaña Browse de la regla FSG-Data-Address HaversineFormula Connect-SQL.
Diseño de la solución
|
Tenga en cuenta que el paso RDB-List en la actividad Code-Pega-List Connect_SQL_pr_fsg_data_address que origina las fuentes de la Página de Datos D_AddressesWithinDistance.
Es imposible definir este tipo de consulta mediante una definición de reportes porque tiene dos cláusulas SELECT FROM, una con el alias “z” y otra con el alias “d”. A diferencia de una definición de reportes, una regla de conexión de SQL carece de la capacidad de modificar dinámicamente sus condiciones de filtro cuando el valor de un parámetro está vacío. A menos que la definición de reportes esté configurada para generar un resultado “is null” cuando a un parámetro le falta un valor, Pega ignora la condición de filtro, lo cual, en algunos casos, puede ser riesgoso, a menos que se establezca un límite a la cantidad de filas devueltas.
Dentro de la consulta HaversineFormula, no es necesario generar las condiciones de filtro. No tiene sentido ejecutar la consulta a menos que se proporcione un valor para cada parámetro de consulta, con la excepción de la columna IsFor, actualmente “HOTEL” o “VENUE”.
Debe tener cuidado al usar las reglas de Connect-SQL, ya que es posible que los nombres de las columnas no se devuelvan como alias. Por ejemplo, a pesar de asignar un alias a la columna de código postal en minúsculas a PostalCode en mayúsculas y minúsculas, el nombre de la columna se devuelve en minúsculas, igual que existe en una base de datos de Postgres.
En PostgreSQL, los nombres sin comillas no distinguen entre mayúsculas y minúsculas. Por ejemplo, Select Street as STREET or Street or street
, proporciona el nombre de la columna “street” solamente. Si desea obtener el nombre de la columna “Street”, la columna debe colocarse entre comillas, por ejemplo: Select Street as “Street”.
This Topic is available in the following Module:
¿Quiere ayudarnos a mejorar este contenido?