Creación de un procedimiento almacenado
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
En este artículo se describe cómo crear un procedimiento almacenado de SQL Server mediante SQL Server Management Studio y mediante la instrucción CREATE PROCEDURE de Transact-SQL.
Permisos
Requiere el permiso CREATE PROCEDURE en la base de datos y el permiso ALTER en el esquema en el que se va a crear el procedimiento.
Creación de un procedimiento almacenado
Puede utilizar la interfaz de usuario de SQL Server Management Studio (SSMS) o Transact-SQL en una ventana Consulta de SSMS para ejecutar un procedimiento almacenado. Utilice siempre la última versión de SSMS.
Nota:
En el procedimiento almacenado de ejemplo de este artículo se usa la base de datos de ejemplo AdventureWorksLT2022
(SQL Server) o AdventureWorksLT
(Azure SQL Database). Para obtener información sobre cómo obtener y usar las bases de datos de ejemplo de AdventureWorksLT
, consulte Bases de datos de ejemplo de AdventureWorks.
Uso de SQL Server Management Studio
Para crear un procedimiento almacenado en SSMS:
En el Explorador de objetos, conéctese a una instancia de SQL Server o Azure SQL Database.
Para obtener más información, consulte los siguientes inicios rápidos:
Expanda la instancia y, a continuación, expanda Bases de datos.
Expanda la base de datos que desee y, a continuación, expanda Programabilidad.
Haga clic con el botón derecho en Procedimientos almacenados y, a continuación, seleccione Nuevo>Procedimiento almacenado. Se abrirá una nueva ventana Consulta con una plantilla para el procedimiento almacenado.
La plantilla de procedimiento almacenado predeterminada tiene dos parámetros. Si el procedimiento almacenado tiene menos parámetros, más o ninguno, agregue o quite líneas de parámetro en la plantilla según corresponda.
En el menú Consulta , seleccione Especificar valores para parámetros de plantilla.
En el cuadro de diálogo Especificar valores para los parámetros de plantilla, proporcione la siguiente información de los campos Valor:
- Author: reemplace
Name
por su nombre. - Create Date: introduzca la fecha de hoy.
- Description: describa brevemente lo que hace el procedimiento.
- Procedure_Name: reemplace
ProcedureName
por el nuevo nombre del procedimiento almacenado. - @Param1: reemplace
@p1
por el nombre del primer parámetro, como @ColumnName1. - @Datatype_For_Param1: según corresponda, reemplace
int
por el tipo de datos del primer parámetro, como nvarchar(50). - Default_Value_For_Param1: según corresponda, reemplace
0
por el valor predeterminado del primer parámetro o NULL. - @Param2: reemplace
@p2
por el nombre del segundo parámetro, como @ColumnName2. - @Datatype_For_Param2: según corresponda, reemplace
int
por el tipo de datos del segundo parámetro, como nvarchar(50). - Default_Value_For_Param2: según corresponda, reemplace
0
por el valor predeterminado del segundo parámetro o NULL.
En la captura de pantalla siguiente se muestra el cuadro de diálogo completado para el procedimiento almacenado de ejemplo:
- Author: reemplace
Seleccione Aceptar.
En el Editor de Power Query, reemplace la instrucción SELECT por la consulta del procedimiento.
El código siguiente muestra la instrucción CREATE PROCEDURE completada para el procedimiento almacenado de ejemplo:
-- ======================================================= -- Create Stored Procedure Template for Azure SQL Database -- ======================================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: My Name -- Create Date: 01/23/2024 -- Description: Returns the customer's company name. -- ============================================= CREATE PROCEDURE SalesLT.uspGetCustomerCompany ( -- Add the parameters for the stored procedure here @LastName nvarchar(50) = NULL, @FirstName nvarchar(50) = NULL ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON -- Insert statements for procedure here SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; END GO
Para probar la sintaxis, seleccione Analizar en el menú Consulta. Corrija los errores.
Seleccione Ejecutar en la barra de herramientas. El procedimiento se crea como un objeto de la base de datos.
Para ver el nuevo procedimiento que aparece en el Explorador de objetos, haga clic con el botón derecho en Procedimientos almacenados y seleccione Actualizar.
Para ejecutar el procedimiento:
En el Explorador de objetos, haga clic con el botón derecho en el nombre del procedimiento almacenado y seleccione Ejecutar procedimiento almacenado.
En la ventana Ejecutar procedimiento, escriba los valores de todos los parámetros y, a continuación, seleccione Aceptar. Para obtener instrucciones detalladas, consulte Ejecución de un procedimiento almacenado.
Por ejemplo, para ejecutar el procedimiento de ejemplo
SalesLT.uspGetCustomerCompany
, escriba Cannon en el parámetro @LastName y Chris en el parámetro @FirstName y, a continuación, seleccione Aceptar. El procedimiento almacenado se ejecuta y devuelveFirstName
Chris,LastName
Cannon yCompanyName
Outdoor Sporting Goods.
Importante
Valide todos los datos proporcionados por el usuario. No concatene ninguna entrada de usuario antes de validarla. No ejecute nunca un comando creado a partir de una entrada de usuario no validada.
Uso de Transact-SQL
Para crear un procedimiento en el Editor de Power Query de SSMS:
En SSMS, conéctese a una instancia de SQL Server o Azure SQL Database.
Seleccione Nueva consulta en la barra de herramientas.
Escriba el código siguiente en la ventana Consulta, reemplazando
<ProcedureName>
, los nombres y los tipos de datos de cualquier parámetro y la instrucción SELECT por sus propios valores.CREATE PROCEDURE <ProcedureName> @<ParameterName1> <data type>, @<ParameterName2> <data type> AS SET NOCOUNT ON; SELECT <your SELECT statement>; GO
Por ejemplo, la instrucción siguiente crea el mismo procedimiento almacenado en la base de datos
AdventureWorksLT
que el ejemplo anterior, con un nombre de procedimiento ligeramente diferente.CREATE PROCEDURE SalesLT.uspGetCustomerCompany1 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; GO
Seleccione Ejecutar en la barra de herramientas para ejecutar la consulta. Se creará el procedimiento almacenado.
Para ejecutar el procedimiento almacenado, escriba una instrucción EXECUTE en una nueva ventana Consulta, proporcione valores para los parámetros y, a continuación, seleccione Ejecutar. Para obtener instrucciones detalladas, consulte Ejecución de un procedimiento almacenado.