stored procedures - sintaxis - ¿Cuáles son los pros y los contras de escribir procedimientos almacenados de DB2 en SQL frente a Java?
sintaxis de procedimientos almacenados (3)
Con las versiones más nuevas de DB2 puede escribir procedimientos almacenados en SQL o puede crear procedimientos en Java (u otros idiomas) que luego pueden agregarse a la base de datos y llamarse como los procedimientos de SQL. Me pregunto cuáles son los pros y los contras de cada método. Estoy específicamente interesado en comparar esos dos tipos de procedimientos, no en los procedimientos de debate versus el código externo, que creo que ya se ha cubierto. Esto es lo que se me ocurrió hasta ahora:
SQL:
Mejor rendimiento para la funcionalidad básica de SQL
Menos detallado para lógica simple, es decir, puede ejecutar SQL directamente
Sin paso de compilación adicional: solo crea el procedimiento ...
Java:
Código más estructurado y completo (clases, objetos, reutilización, bibliotecas)
Mejores recursos para ayudar tanto en términos de programadores como de documentación
¿Algún otro pensamiento?
No solo Java, sino cualquier lenguaje de procedimiento : procedimental , esa es la clave.
DB2 es un álgebra relacional, no un lenguaje de programación. Si necesita hacer algo complejo, es mejor utilizar un lenguaje de procedimientos que tratar de convertir SQL en algo que no debe ser.
En realidad usamos REXX para nuestro trabajo DB2 / z, pero he visto a los chicos usar bash en el mainframe para crear prototipos rápidamente. Algunos que solo usan SQL crean todas estas tablas temporales horribles para almacenar cosas que se guardan mejor en estructuras y lejos de la base de datos.
Mi opinión es que la complejidad es el único factor diferenciador entre usar SQL directamente en un procedimiento almacenado y un enfoque de procedimiento. Tenemos dos reglas generales al tomar estas decisiones.
1 / Si una unidad de trabajo requiere más de dos viajes a la base de datos, la convertimos en un procedimiento almacenado.
2 / Si un procedimiento almacenado crea una tabla temporal, entonces usamos un lenguaje de procedimiento para hacerlo.
Puede que ya haya encontrado esto, pero por las dudas y para cualquier otro que se mueva aquí hay un IBM Redbook on SProcs y los cambios para DB2 v9 disponibles en DB2 9 para z / OS Stored Procedures: Through the CALL and Beyond, que analiza los disponibles opciones y sus méritos relativos.
La ventaja de los procedimientos almacenados de SQL es que son portátiles para otros Db2 UDb con cambios mínimos o nulos. Pero los procedimientos externos de Db2 serían una mejor opción, ya que puede hacer más con un lenguaje de procedimiento que solo con sql. Yo diría que cobol sería una mejor opción para los procedimientos almacenados externos de DB2 que Java por las siguientes razones. 1). Podría reutilizar algún código de programas existentes. La conversión de un programa secundario de cobol a un procedimiento almacenado o un procedimiento almacenado a un programa secundario de cobol es muy fácil de lograr. 2). Podrías usar el equipo de desarrollo de cobol existente que tenga conocimiento funcional con el sistema.