SQL Server Stored Procedure with Parameters (Español)


By: Greg Robidoux
Overview

el verdadero poder de los procedimientos almacenados es la capacidad de pasar parámetros y hacer que el procedimiento almacenado maneje las diferentes solicitudes que se realizan. En thistopic veremos pasar valores de parámetros a un procedimiento almacenado.

explicación

Al igual que tiene la capacidad de usar parámetros con su código SQL, también puede configurar sus procedimientos almacenados para aceptar uno o más valores de parámetros. Todos los ejemplos utilizan la base de datos AdventureWorks.,

crear un procedimiento almacenado SQL con parámetros

  1. para crear un procedimiento almacenado con parámetros utilizando la siguiente sintaxis:
  2. Crear procedimiento DBO.uspGetAddress @City nvarchar (30) como
  3. Ver detalles y ejemplos a continuación

consulta de SQL Server para convertirla en un procedimiento almacenado

a continuación se muestra la consulta que queremos utilizar para crear el procedimiento almacenado.

USE AdventureWorksGOSELECT * FROM Person.AddressGO

La idea es crear el procedimiento almacenado donde la ciudad se pasa al procedimiento almacenado para que pueda crear resultados dinámicos., Esto se puede hacer de la siguiente manera usando una variable. Si ejecutamos el siguiente código, devolverá solo los resultados para NewYork.

USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO

podríamos usar este enfoque y seguir actualizando la variable @City, pero hay una mejor manera de hacerlo creando un procedimiento almacenado.

crear el procedimiento almacenado de SQL Server con un parámetro

en este ejemplo consultaremos a la persona.Tabla de direcciones de la base de datos AdventureWorksdatabase, pero en lugar de recuperar todos los registros lo limitaremos a una particularidad., Este ejemplo asume que habrá una coincidencia exacta en el valor de la ciudad que se pasa.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO

para llamar a este procedimiento almacenado lo ejecutaríamos de la siguiente manera:

EXEC dbo.uspGetAddress @City = 'New York'

eliminar el procedimiento almacenado

Si ha creado el procedimiento almacenado y desea volver a crear el storedprocedure con el mismo puede eliminarlo usando lo siguienteantes de intentar crearlo de nuevo.

USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO

Si usted intenta crear el procedimiento almacenado y ya existe obtendrá un mensaje de error.,

Msg 2714, nivel 16, estado 3, Procedimiento uspGetAddress, línea 1
Ya hay un objeto llamado ‘uspGetAddress’ en la base de datos.

SQL Server Stored Procedure with Parameter using Wildcard

También podemos hacer lo mismo, pero permitir que los usuarios nos den un punto de partida para buscar los datos.

Aquí podemos cambiar el » = «A UN LIKE y usar el comodín»%».

esto se puede ejecutar de la siguiente manera para encontrar todas las ciudades que comienzan con nuevo.,

EXEC dbo.uspGetAddress @City = 'New'

error de procedimiento almacenado de SQL Server cuando el parámetro no se pasa

en los dos ejemplos siguientes se asume que siempre se pasará un valor de parámetro. Si intenta ejecutar el procedimiento sin pasar un parametervalue obtendrá un mensaje de error como el siguiente:

EXEC dbo.uspGetAddress
Msg 201, Level 16, State 4, Procedure uspGetAddress, Line0
Procedure or function ‘uspGetAddress’ expects parameter ‘@City’, whichwas not supplied.,

SQL Server Stored Procedure using null as Default Parameter

en la mayoría de los casos siempre es una buena práctica pasar todos los valores de los parámetros,pero a veces no es posible. Así que en este ejemplo usamos la opción NULL para permitirle no pasar un valor de parámetro. Si creamos y ejecutamos este storedprocedure tal cual no devolverá ningún dato, porque está buscando cualquier Cityvalues que sea igual a NULL.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO

si ejecutamos lo siguiente, funcionará, pero no se devolverán datos.,

EXEC dbo.uspGetAddress

podríamos cambiar este procedimiento almacenado y usar la función ISNULL para obtener aroundthis. Por lo tanto, si se pasa un valor, utilizará el valor para limitar el conjunto de resultados y si no se pasa un valor, devolverá todos los registros. (Nota: si la columna City tiene valores NULL, esto no incluirá estos valores. Tendrá que agregar lógica adicional para City IS NULL)

ahora si ejecutamos el siguiente comando, todos los datos serán devueltos desde la tabla.,

EXEC dbo.uspGetAddress

crear un procedimiento almacenado de SQL Server con múltiples parámetros

configurar múltiples parámetros es muy fácil de hacer. Solo necesita listar cada parámetro y el tipo de datos separados por una coma como se muestra a continuación.

para ejecutar esto puedes hacer cualquiera de las siguientes:

última actualización: 4/3/2020

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *