Un procedimiento almacenado es un grupo de instrucciones SQL compiladas en una sola. Los procedimientos almacenados pueden incluir lógica empresarial y otras construcciones de programación.
En SQL Server, un procedimiento almacenado es un grupo de una o más instrucciones Transact-SQL o una referencia a un método de lenguaje de ejecución común (CLR) de Microsoft .NET Framework.
Programabilidad
Un procedimiento almacenado es más que un script largo. Es un script que se ha guardado en SQL Server específicamente bajo los Procedimientos almacenados nodo, y puede:
- Aceptar parámetros de entrada (y devolver múltiples valores en forma de parámetros de salida al programa de llamada).
- Contener sentencias de programación.
- Retornar un valor de estado a un programa de llamada para indicar éxito o falla, y la razón de cualquier falla.
Los procedimientos almacenados suelen contener lógica empresarial. Por ejemplo, un procedimiento almacenado puede aceptar parámetros que se le pasan y compararlos con esos parámetros usando IF
declaraciones. Por ejemplo, si el parámetro es un valor, haga esto, si es otro valor, haga eso.
Los procedimientos almacenados pueden mejorar el rendimiento de una aplicación, porque el procedimiento almacenado se analiza y optimiza tan pronto como se crea y luego se almacena en la memoria. Ejecutar una consulta condicional a través de un procedimiento almacenado puede ser extremadamente rápido, en comparación con una aplicación que envía una consulta a través de la red, al servidor SQL, luego se le devuelven todos los datos a través de la red para que pueda filtrarlos y seleccionarlos. solo los registros que le interesan.
Beneficios de los procedimientos almacenados
Estos son algunos de los principales beneficios del uso de procedimientos almacenados:
Beneficio | Explicación |
---|---|
Programación modular | Puede escribir un procedimiento almacenado una vez, luego llamarlo una y otra vez, desde diferentes partes de una aplicación (e incluso desde varias aplicaciones). |
Rendimiento | Los procedimientos almacenados proporcionan una ejecución de código más rápida y reducen el tráfico de red.
|
Seguridad | Los usuarios pueden ejecutar un procedimiento almacenado sin necesidad de ejecutar ninguna de las declaraciones directamente. Por lo tanto, un procedimiento almacenado puede proporcionar funcionalidad de base de datos avanzada para usuarios que normalmente no tendrían acceso a estas tareas, pero esta funcionalidad está disponible de forma estrictamente controlada. |
Cómo crear un procedimiento almacenado
Para crear un procedimiento almacenado, use CREATE PROCEDURE
seguida del código que conforma el procedimiento almacenado. Si su procedimiento almacenado va a aceptar parámetros, deben incluirse después del nombre.
CREATE PROCEDURE myStoredProcedure AS ... OR CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS ...
Ejemplo
Aquí hay un ejemplo de cómo crear un procedimiento almacenado y luego ejecutar ese procedimiento almacenado.
-
Crear el procedimiento almacenado
Ejecute la siguiente declaración en la base de datos de Música que hemos creado a lo largo de este tutorial.
Este ejemplo crea un procedimiento almacenado llamado AlbumsFromArtist. Selecciona todos los álbumes de un artista que se especifica cuando se ejecuta el procedimiento almacenado.
CREATE PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT AlbumName, ReleaseDate FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE Artists.ArtistName = @ArtistName; GO
-
Ver el procedimiento almacenado
Expanda Programabilidad> Procedimientos almacenados debajo de la base de datos aplicable para ver su procedimiento almacenado recién creado. También puede expandir los Parámetros del procedimiento almacenado para ver los parámetros que necesita pasar cuando lo ejecuta.
-
Ejecutar el procedimiento almacenado
Ahora que se ha creado el procedimiento almacenado, puede ejecutarlo usando
EXECUTE
declaración y pasar los parámetros requeridos.En nuestro ejemplo, necesitamos pasar el nombre del artista.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";
Como alternativa, puede omitir el nombre del parámetro al pasar parámetros. Me gusta esto:
EXECUTE spAlbumsFromArtist "Devin Townsend";
Alterar un procedimiento almacenado
Puede modificar su procedimiento almacenado con ALTER PROCEDURE
declaración. Al igual que cuando modifica una vista, puede modificar un procedimiento almacenado simplemente aplicando la nueva definición de procedimiento almacenado.
-
Alterar el procedimiento almacenado
Ejecute la siguiente instrucción. Esto agrega una nueva columna a los resultados devueltos por el procedimiento almacenado. También agregamos alias a los nombres de las columnas.
ALTER PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT al.AlbumName, al.ReleaseDate, g.Genre FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId INNER JOIN Genres g ON g.GenreId = al.GenreId WHERE ar.ArtistName = @ArtistName; GO
-
Ejecutar el procedimiento almacenado
Ahora que hemos agregado el
Genre
columna a la vista, el procedimiento almacenado ahora devuelve esa columna cuando lo ejecutamos.EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";