Ejecutar un procedimiento con parámetros en SQL Server

Tutorial con ejemplos de código T-SQL para ejecutar un procedimiento almacenado en SQL Server con uno o varios parámetros de entrada.

Dependiendo del código T-SQL, ejecutar un procedimiento con parámetros en SQL Server requiere proporcionar valores obligatorios, de lo contrario, se utilizarán los valores predeterminados. Primero debes establecer el valor NULL en el código del procedimiento, ya que creamos los parámetros de manera obligatoria o no obligatoria. Para parámetros opcionales, podemos asignar un valor predeterminado en la declaración de creación del procedimiento SQL. Así, los parámetros opcionales no impiden ejecutar el procedimiento y obtener una retroalimentación potencial en SSMS.

1. Ejecutar un procedimiento almacenado en SQL Server con un parámetro

Primero, crea el procedimiento a llamar o asegúrate de que el objetivo ya esté en la base de datos. Si no, ejecuta el código a continuación, es similar al utilizado para crear el procedimiento almacenado uspGetCustomer de este tutorial. En este procedimiento almacenado, el único parámetro de entrada es el ID del Cliente, y es obligatorio. El objetivo del procedimiento es mostrar toda la información, es decir, todas las columnas de la tabla Clientes para el número de cliente dado como parámetro. El procedimiento almacenado de muestra con este script:

CREATE PROCEDURE uspGetCustomer
   @NoClient INT
AS
   SELECT  *
   FROM    [dbo].[CLIENTS]
   WHERE   [NOCLIENT] = @NoClient
GO

Aquí hay un ejemplo simple de cómo ejecutar un procedimiento almacenado MS SQL con uno o más parámetros como entrada. De hecho, para pasar la información de entrada al código SQL, ejecuta este código y adapta esta sintaxis al caso de negocio específico:

EXEC dbo.uspGetCustomer
   @NoClient = 1;

2. Ejecutar un procedimiento almacenado con múltiples parámetros en T-SQL

En este segundo caso, se utilizan como parámetros el ID del Cliente y la Ciudad. En estos ejemplos más prácticos, por supuesto, es posible usar solo nombres y valores explícitos en lugar de identificadores técnicos.

-- Crear el mismo procedimiento con dos parámetros y también valores predeterminados NULL
CREATE PROCEDURE uspGetCustomer
  @ClientNumber  int          = NULL, 
  @City          nvarchar(20) = NULL
AS
  SELECT *
  FROM   [dbo].[CLIENTS]
  WHERE  [ClientNumber] = @ClientNumber
    OR   [City]         = @City
GO

Así, para ejecutar un procedimiento almacenado codificado en SQL Server, simplemente llama al procedimiento, con los parámetros obligatorios separados por valores y en el orden correcto, o nombrados explícitamente, que es la forma recomendada.

EXEC dbo.uspGetCustomer
   @ClientNumber = 2,
   @City         = 'Casablanca';
 

De hecho, en el párrafo anterior menciono el hecho de que no necesitas llamar explícitamente a los nombres de las variables, puedes llamarlo de esta manera:

EXEC dbo.uspGetCustomer
   2,
   'Casablanca';
 

3. El orden importa al ejecutar procedimientos almacenados en T-SQL

Pero en este caso, se debe respetar el orden. Por ejemplo, intenta ejecutar el código a continuación, es decir, sin respetar el orden.

EXEC dbo.uspGetCustomer
   'Casablanca', 
   2;

Podrías encontrar un error de SQL Server como este, porque el tipo de los parámetros no es el mismo. Y si ambos fueran enteros, podría ser peor, porque entonces el resultado sería falso.

Para ejecutar un procedimiento almacenado con parámetros en SQL Server se debe respetar el orden
Para ejecutar un procedimiento almacenado con parámetros en SQL Server se debe respetar el orden

Msg 8114, Nivel 16, Estado 1, Procedimiento dbo.uspGetCustomer, Línea 0 [Línea de inicio del lote 0]
Error al convertir el tipo de datos varchar a int.

Una sintaxis simple siempre que se utilicen los parámetros y valores predeterminados

Para avanzar en el viaje de aprendizaje de SQL Server y T-SQL, este es un breve tutorial sobre cómo devolver valores con un procedimiento almacenado utilizando la opción de salida. De hecho, los procedimientos almacenados, a diferencia de las funciones SQL, no siempre devuelven un valor. Para devolver un valor con un procedimiento MS SQL, usa la opción OUTPUT.

Más contenido sobre Procedimientos SQL

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*