Tip: “Directivas FireDAC” o “Pre-Procesamiento de comandos”
Una sola consulta SQL, muchos motores… sabemos que FireDAC soporta múltiples motores de bases de datos, sin embargo y a pesar de que SQL sea un estándar, cada uno de los ya mencionados posee sendas particularidades… incluso en sus consultas, ¿Cómo afrontar esto?
¿Cómo ejecutarías una sentencia SQL en varios motores usando un mismo TFDQuery, cuando además esa sentencia tiene particularidades de utilización?
Ejemplo
La clausula Limit funciona muy bien en SQLite, MySQL y PostgreSQL. Sin embargo en Interbase y FireBird se llama First o Rows (Aunque rows no se comporta igual), en SQLServer se llama TOP y en Oracle hay que jugar con una especie de “campo oculto” llamado rownum.
La siguiente tabla ilustra lo dicho, para que se vea la magnitud de la diferencia en el ejemplo expuesto:
Motor de Base de datos | Sentencia para Limitar el Número de Filas | ||
SQLite, MySQL, PostgreSQL… |
|
||
Interbase, Firebird |
|
||
SQL Server |
|
||
Oracle |
|
Y eso que este es sólo uno de tantos ejemplos que nos podemos encontrar.
¿Con tantas particularidades en los distintos motores, por más que FireDAC pueda conectarse a cuanto motor hay en el mercado, cómo tendrías todo esto en cuenta en un solo TFDQuery?.
Seguramente (como a mí en algún momento) se te ocurra crear distintos TFDQuery en tiempo de ejecución con la sentencia correcta para cada motor y sí, es algo valido, incluso hasta organizado.
Aunque si necesitas mostrar esto en una grid o cualquier otro control, entonces ya la cosa se nos va volviendo tediosa y compleja de mantener… que no es imposible y si eres organizado pues hasta te quedará super genial… pero las Directivas FireDAC, Sustitución condicional o pre-procesamiento de comandos (como decidas llamarle) son una alternativa que te invito a tenerla en cuenta, analiza sus pro, sus contra y cómo podrías mejorar su mantenimiento adecuándolo a tu necesidad y paradigma… quizá sea lo que necesitas, seguro que te ayudará a organizarte aún mejor.
VÍDEO
El siguiente es el vídeo que muestra su funcionamiento, espero les sea de utilidad.
Hasta luego. 🙂
Impresionante, no sabia nada de esto
+10
Me alegra que te haya gustado. 🙂
FireDAC es muy buena biblioteca, con muchos recursos por explotar.
Hola!, muy buen video.
Averiguando más sobre esto veo que ayuda bastante.
http://docwiki.embarcadero.com/RADStudio/Seattle/en/Preprocessing_Command_Text_(FireDAC)
¡Excelente!, gracias por compartir el enlace… este tema, como bien dices ayuda bastante y además tiene mucha tela para cortar. Un recurso fenomenal de FireDAC.
Súper, no había visto un ejemplo de este tipo, muchas gracias por el vídeo.
Gracias por el comentario :), es bastante motivador saber que te ha llegado 🙂
Excelente, Motivos para seguir usando esta maravillosa herramienta. Gracias por tu tiempo.
Que bueno que te haya gustado, este es un recurso muy útil.
Excelente, esto resuelve muchas inquietudes de conexion multiple.
Así es, me alegra saber que sirven estos pequeños tips, recuerda compartirlo.
Muy interesante. Lo que me gustaría si pudieras compartir es algún artículo de como generar alguna clase que pasándole a que motor de base de datos se quiere conectar la misma resuelva las distintas cuestiones y genere sentencia de conexión.
Se le podría pasar aun dato mas que se necesite y no pueda ser automático.
Primero que todo, muchas gracias por la sugerencia.
Comprendo el tema de pasarle lo de resolver las distintas cuestiones de conexión, sin embargo sería genial si me proporcionas un caso como ejemplo de lo que deseas resolver, pues el reto suena interesante y me gustaría resolverlo con un ejemplo práctico de uso.
Un Saludo,
Jhonny.
Genial, interesante tema y muy bien explicado
Me alegra que te haya gustado, espero que también te sea útil.