Esto depende en gran medida de lo que esté haciendo en los procesos almacenados. Sin embargo, es una buena idea usar transacciones si está realizando varias inserciones/actualizaciones o eliminaciones en un proceso. De esta forma, si una parte falla, las otras partes se retrotraen dejando su base de datos en un estado consistente.
Las dos cosas más importantes a tener en cuenta al escribir en una base de datos (y por lo tanto al utilizar un proceso almacenado que realiza una acción distinta de la seleccionada) son la integridad y el rendimiento de los datos. Sin integridad de datos, solo tiene una base de datos que contiene basura y es inútil. Sin performacne, no tendrá usuarios (si son clientes externos) ni usuarios insatisfechos (si tienen el mandato de usar su producto, generalmente usuarios internos que no tienen otra opción para ir a otra parte). Ninguno de los dos es bueno para tu carrera. Por lo tanto, al escribir un proceso almacenado, asegúrese de asegurarse primero de que los datos se ingresen correctamente en la base de datos y de que fallen si hay un problema en una parte de la acción.
Si es necesario, escriba las comprobaciones en el proceso para asegurarse de que el resultado final sea el correcto. Soy especialista en ETL y siempre escribo mis procesos para que los datos se limpien y normalicen antes de intentar importarlos en mis tablas. Si está haciendo cosas desde la interfaz de usuario, esto podría no ser tan importante en el proceso, aunque haría que el usuario inteface hacer comprobaciones incluso antes de ejecutar el proceso para asegurarse de que los datos son buenos para la inserción (cosas como verificar para asegurarse un campo de fecha contiene una fecha real, que todos los campos obligatorios tienen valores, etc.)
Si está escribiendo procs para poner grandes cantidades de datos en tablas, es mejor tener una forma de probar esos resultados antes de que se finalicen . Se sorprenderá de la basura que obtendrá de los clientes y proveedores para la importación de datos. Escribimos todos nuestros procesos de importación con una bandera de prueba. De esta forma, puede devolver los datos seleccionados en lugar de realizar la acción, para que pueda ver de antemano, exactamente lo que estaría afectando.
No soy partidario de SQL dinámico y prefiero no usarlo en procesos almacenados. Si está atascado con SQl dinámico en procesos existentes, coloque un indicador de depuración que le permita imprimir el SQL en lugar de ejecutarlo. Luego ponga los comentarios en los casos más típicos que necesitará ejecutar. Descubrirá que puede mantener el proceso mucho mejor si lo hace.
No haga las cosas con un cursor, simplemente porque desea reutilizar otro proceso almacenado que solo funciona en un registro a la vez. Reutilización de código que causa problemas de rendimiento si es algo malo.
Si está utilizando sentencias case o declaraciones if, asegúrese de haber hecho las pruebas que afectarán a todas las ramas posibles. El que no prueba es el que fallará.
Eso es similar a decir: "He escrito historias, pero quiero escribir bien elaboradas, best-sellers y novelas para todo tipo de lectores y también me encantaría aprender sobre cualquier trucos o buenas prácticas para escribir historias". Es posible que desee ser más específico en lo que está buscando ... –
De acuerdo, las preguntas más específicas serían buenas. – ahockley