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
- para crear un procedimiento almacenado con parámetros utilizando la siguiente sintaxis:
- Crear procedimiento DBO.uspGetAddress @City nvarchar (30) como
- 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.,
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
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