¿Hay alguna guía sobre cuándo debe y no debe escribir un complicado procedimiento almacenado de 2000+ líneas?Cuándo escribir un procedimiento almacenado largo
En mi caso específico, este procedimiento almacenado contiene muchas declaraciones if/then, case, goto y branching. Funciona mediante la construcción de consultas SQL en función de las entradas y los resultados de las consultas y utiliza la instrucción execute para ejecutar las consultas construidas. Puede ejecutar varias consultas construidas en una sola llamada y usa los resultados de esas consultas para construir otras consultas para ejecutar.
Es bastante complicado y difícil de entender. La depuración es difícil, la única forma de saber qué está pasando es hacer una llamada para ver qué está haciendo. Apenas hay un manejo o registro de excepciones. Mantenerlo es un dolor. De hecho, nadie sabe realmente lo que hace o cómo fue creado y si tuviéramos que hacer modificaciones en él tendríamos que adoptar un enfoque de "cruzar los dedos y esperar lo mejor". Pero, creo que se hizo de esta manera por razones de rendimiento.
Este procedimiento es utilizado por muchas aplicaciones. La única otra forma en que puedo pensar para hacer algo como esto es a través de un servicio web. Probablemente sería comparable en complejidad, pero mucho más fácil de entender. Sin embargo, probablemente sería varias veces más lento, ya que aún tendría que realizar varias llamadas a la base de datos para 1 solicitud.
Entonces, mi (s) pregunta (s) son, ¿cómo decidimos cuándo y cuándo no escribir largos procedimientos almacenados?
¿Hay algo que me falta o simplemente tenemos que aguantar nuestro monstruoso procedimiento almacenado?
¿Existen formas de estructurar y descomponer los procedimientos almacenados en componentes más pequeños para que sean fáciles de entender?
¿Será un procedimiento almacenado siempre más rápido que cualquier otra cosa y la elección correcta cuando necesite realizar muchas llamadas a la base de datos?
Una palabra: ** NUNCA! ** Nunca deberías escribir semejante monstruosidad ...cualquier función/procedimiento no debe tener más de dos páginas, y eso es tomar una postura muy liberal sobre este asunto ... 150 líneas - MAX. 2000 líneas de código en un solo procedimiento .... ¡Qué pesadilla de mantenimiento! –
@dtc - hey, me preguntaba si/cómo resolvió el gran problema del proceso. Siento tu dolor. Tengo un proceso de LOC 1550 que tengo un control ahora pero desde el principio, fue una bestia aprender/descubrir. Me pregunto cómo se podría/debería romper. – nanonerd