sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es un procedimiento almacenado?

Los procedimientos almacenados son un lote de instrucciones SQL que se pueden ejecutar de varias maneras. La mayoría de los principales DBM admiten procedimientos almacenados; sin embargo, no todos lo hacen. Deberá verificar con la documentación de ayuda de su DBMS particular para obtener información específica. Como estoy más familiarizado con SQL Server, lo usaré como mis ejemplos.

Para crear un procedimiento almacenado, la sintaxis es bastante simple:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Entonces, por ejemplo:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

    SELECT * from [Users]
    WHERE ISNULL(@login,login)=login

Un beneficio de los procedimientos almacenados es que puede centralizar la lógica de acceso a datos en un solo lugar que luego es fácil de optimizar para los administradores de bases de datos. Los procedimientos almacenados también tienen un beneficio de seguridad en el sentido de que puede otorgar derechos de ejecución a un procedimiento almacenado, pero el usuario no necesitará tener permisos de lectura/escritura en las tablas subyacentes. Este es un buen primer paso contra la inyección SQL.

Los procedimientos almacenados tienen inconvenientes, básicamente el mantenimiento asociado con su operación CRUD básica. Digamos que para cada tabla tiene Insertar, Actualizar, Eliminar y al menos una selección basada en la clave principal, eso significa que cada tabla tendrá 4 procedimientos. ¡Ahora tome una base de datos de tamaño decente de 400 tablas y tendrá 1600 procedimientos! Y eso suponiendo que no tenga duplicados, lo que probablemente tendrá.

Aquí es donde el uso de un ORM o algún otro método para generar automáticamente sus operaciones CRUD básicas tiene mucho mérito.