El uso de procedimientos almacenados es una forma fácil de ahorrar tiempo al evitar escribir repetidamente las mismas líneas de código y también acelerar la llamada y la ejecución de la consulta deseada.
Pero, ¿qué sabe sobre los procedimientos almacenados, cómo funcionan y qué ventajas ofrecen a los usuarios?
En este artículo, aprenderá qué es un procedimiento almacenado, sus beneficios, cómo se diferencia de las funciones, cómo crear un procedimiento almacenado y, por último, cómo usar procedimientos almacenados en analítica integrada.
¿Qué es un procedimiento almacenado?
Un procedimiento almacenado es un conjunto de sentencias SQL y otros constructos PL/SQL almacenados en un sistema de gestión de bases de datos relacionales (RDBMS) como un grupo que puede guardar y reutilizar repetidamente. Un procedimiento almacenado puede consistir en varias sentencias SQL como SELECT, INSERT, UPDATE o DELETE. Se ejecutan como una unidad y se utilizan para resolver un problema específico o realizar un conjunto de tareas relacionadas. Eso significa que si necesita una consulta SQL y la escribe repetidamente, puede guardarla como un procedimiento almacenado y luego llamarla para ejecutar la consulta.

Si está utilizando Microsoft SQL Server, puede encontrar procedimientos almacenados expandiendo el nodo Programabilidad debajo de su base de datos en el Explorador de objetos de SQL Server Management Studio.

Beneficios de usar procedimientos almacenados.
Los procedimientos almacenados son uno de los temas de bases de datos más utilizados y populares., y como tales, ofrecen una serie de beneficios. El uso de procedimientos almacenados puede simplificar y acelerar la ejecución de consultas SQL.
Por ejemplo, los procedimientos almacenados pueden reducir el tráfico de red entre servidores y clientes. Esto es el resultado de que los comandos se ejecuten como un lote de código único; por lo tanto, en lugar de que cada línea de código se envíe para su ejecución individualmente, solo se envía la llamada para ejecutar el procedimiento almacenado al servidor.
Estos son algunos de los otros beneficios de usar procedimientos almacenados:
Mantenibilidad.
El mantenimiento de un procedimiento almacenado es bastante fácil en el servidor en comparación con el mantenimiento de copias en numerosas máquinas cliente.
Además, los scripts de los procedimientos se almacenan en una ubicación, pero los procedimientos almacenados se pueden utilizar libremente en otras aplicaciones. En caso de un cambio de definición, esto no es un problema, ya que solo se verá afectado el procedimiento almacenado y no la aplicación que lo llama.
Rendimiento y eficiencia.
Los procedimientos almacenados se compilan solo una vez y luego se pueden usar muchas veces. Esto ahorra mucho tiempo al escribir las mismas cosas varias veces si está realizando consultas ad hoc y proporciona una ligera ventaja de rendimiento en la primera ejecución de un procedimiento almacenado frente a la primera ejecución de una consulta ad hoc.
Incluye lógica empresarial compleja.
Si bien no es el mejor lugar para la lógica empresarial compleja, un procedimiento almacenado es básicamente una llamada a una función en una base de datos. Puede incluir sentencias IF, bucles, comprobaciones de seguridad y mucho más para garantizar que se envíen los datos correctos a la llamada del procedimiento almacenado.
Si bien es debatible según las habilidades de su equipo, las mejores prácticas se inclinan por colocar la lógica empresarial de una aplicación en el lado de la aplicación. Sin embargo, los procedimientos almacenados y T-SQL son sintaxis muy potentes para la ejecución de lógica.
Fácil de modificar.
Puede cambiar rápidamente una o más sentencias en un procedimiento almacenado con la ayuda del comando ALTER PROCEDURE, lo que facilita y agiliza la actualización de los resultados enviados a la aplicación que llama. A diferencia de un componente de nivel intermedio que incluye lógica empresarial, que requeriría una posible redistribución costosa, un cambio rápido en un procedimiento almacenado toma segundos.
Considere este procedimiento almacenado, donde el valor @OrdYear está codificado. Un desarrollador o administrador de base de datos puede actualizar fácilmente la variable @OrdYear utilizando el comando ALTER PROCEDURE.
ALTER PROCEDURE [dbo].[SalesByCategory]
@CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'
AS
IF @OrdYear != '1996' AND @OrdYear != '1997' AND @OrdYear != '1998'
BEGIN
SELECT @OrdYear = '1998'
END
SELECT ProductName,
TotalPurchase=ROUND(SUM(CONVERT(decimal(14,2), OD.Quantity * (1-OD.Discount) * OD.UnitPrice)), 0)
FROM [Order Details] OD, Orders O, Products P, Categories C
WHERE OD.OrderID = O.OrderID
AND OD.ProductID = P.ProductID
AND P.CategoryID = C.CategoryID
AND C.CategoryName = @CategoryName
AND SUBSTRING(CONVERT(nvarchar(22), O.OrderDate, 111), 1, 4) = @OrdYear
GROUP BY ProductName
ORDER BY ProductName
La analítica en sí ayuda a las empresas a reducir el riesgo de fraude y a proteger mejor sus datos. Estas herramientas pueden identificar patrones para detectar y prevenir comportamientos fraudulentos para que las empresas puedan estar seguras. Un ejemplo es la industria de seguros. Basándose en el comportamiento pasado de los solicitantes,
Otro gran beneficio de usar procedimientos almacenados es la seguridad que proporciona a su fuente de datos. Puede mejorar la seguridad de una aplicación utilizando procedimientos almacenados restringiendo el acceso no autorizado. Por ejemplo, puede otorgar a alguien acceso a un procedimiento que actualice la tabla de la base de datos sin permitir el acceso a la tabla en sí. También puede utilizar procedimientos almacenados para ”ocultar” los nombres de las tablas subyacentes del usuario final del procedimiento almacenado. Dado que el llamador del procedimiento almacenado solo tiene el nombre del procedimiento almacenado, no el nombre de las tablas utilizadas en el procedimiento almacenado, no podrá acceder directamente a las tablas con sus datos de ninguna manera maliciosa.
Diferencias entre procedimientos almacenados y funciones.
Los procedimientos almacenados y las funciones son objetos de base de datos que contienen conjuntos de sentencias SQL para completar tareas. Y aunque a primera vista pueden parecer lo mismo, son bastante diferentes.
Estos son algunos de los aspectos que diferencian los procedimientos almacenados y las funciones:
- Se puede llamar a una función desde un procedimiento almacenado, mientras que no se puede llamar a un procedimiento almacenado desde una función.
- Una función no permite parámetros de salida, mientras que un procedimiento almacenado permite tanto parámetros de entrada como de salida.
- No se pueden administrar transacciones dentro de una función, pero se puede hacer dentro de un procedimiento almacenado.
- Se puede llamar a una función utilizando una sentencia SELECT, pero no se puede llamar a un procedimiento almacenado utilizando una sentencia SELECT.
- Una función tiene un tipo de retorno y devuelve un valor, mientras que un procedimiento almacenado no tiene un tipo de retorno y devolver un valor es opcional.
- Una función solo permite una sentencia SELECT en ella, mientras que un procedimiento almacenado permite SELECT, INSERT, UPDATE y DELETE.
- Se puede usar un procedimiento almacenado para leer y modificar datos, mientras que una función solo puede leerlos.
- Una función se puede insertar en una instrucción SELECT, mientras que un procedimiento almacenado no se puede utilizar en una instrucción SELECT.
- Una función no puede devolver varios conjuntos de resultados, mientras que un procedimiento almacenado sí puede.
- Podemos usar transacciones en procedimientos almacenados, pero no están permitidas en funciones.
¿Cómo crear un procedimiento almacenado?
Crear un nuevo procedimiento almacenado es sencillo. Hay 3 pasos básicos:
- En el Explorador de objetos de SQL Server, haga clic derecho en nodo Procedimientos almacenados en Programabilidad.

- En la plantilla Nuevo procedimiento almacenado, modifique la instrucción CREATE PROCEDURE para incluir las tablas, los parámetros y las opciones de consulta para devolver los datos deseados del procedimiento almacenado.

- Haz clic en el Ejecute el botón en la barra de herramientas para compilar y guardar el procedimiento almacenado..

Existen varias herramientas para crear procedimientos almacenados; usar el SQL Server Management Studio interactivo es la forma más sencilla, ya que le brinda una forma fácil de comenzar a conectarse a muchos tipos diferentes de servidores de bases de datos, incluidos Azure y SQL Server Analysis Services.
¿Cómo usar procedimientos almacenados en análisis integrados?
Cuando use el Reveal Embed SDK hay 2 formas de usar procedimientos almacenados.
- Cuando esté creando una nueva visualización en una base de datos que admita procedimientos almacenados, verá una lista de procedimientos almacenados disponibles. Tratará el procedimiento almacenado que seleccione como cualquier otra fuente de datos en Reveal; la única diferencia es un procedimiento almacenado parametrizado, que puede usar en un filtro pasando variables al procedimiento almacenado.

Puede ver un video rápido de 6 minutos sobre cómo usar procedimientos almacenados a través de la interfaz de usuario de Reveal aquí:
- Dado que Reveal es un SDK, también tiene un control programático completo sobre los procedimientos almacenados y los parámetros a través del código. Para pasar un nombre de procedimiento almacenado, junto con cualquier parámetro requerido, use la función ChangeVisualizationDataSourceItemAsync. Este ejemplo demuestra cómo pasar un procedimiento almacenado llamado CustOrderHist y pasar el parámetro CustomerID.
public async override Task<RVDataSourceItem> ChangeVisualizationDataSourceItemAsync
(string userId, string dashboardId, RVVisualization visualization,
RVDataSourceItem dataSourceItem)
{
if (dashboardId == "StoredProcNorthWind")
{
var msSqlDsi = dataSourceItem as RVSqlServerDataSourceItem;
if (msSqlDsi?.Procedure == "CustOrderHist")
{
msSqlDsi.ProcedureParameters["@CustomerID"] = "AROUT";
}
else
{
msSqlDsi.Procedure = "MyProcedure";
msSqlDsi.ProcedureParameters["@SampleParam"] = "SampleParamValue";
}
return dataSourceItem;
}
}
Resumen.
Los procedimientos almacenados son una herramienta poderosa para consultar una base de datos y devolver resultados a una aplicación que los llama. Debe considerar el uso de procedimientos almacenados para simplificar la forma en que presenta los datos a los usuarios del Reveal SDK y para simplificar la forma en que maneja los parámetros en el código de su aplicación en lugar de usar consultas ad hoc largas y propensas a errores.
Puede obtener más información sobre Reveal y cómo funciona programando una demostración rápida o Tome decisiones basadas en datos.
Desbloquee más horas al día
Simplifique y acelere la ejecución de consultas SQL con Reveal Embedded Analytics
