By: Greg Robidoux
Overview
The real power of stored procedures is the ability to pass parameters and havet the stored procedure handle the differing requests that are made. No thistopic vamos olhar para a passagem de valores de parâmetros para um procedimento armazenado.
explicação
assim como você tem a capacidade de usar parâmetros com o seu código SQL você também pode configurar seus procedimentos armazenados para aceitar um ou mais valores de parâmetros. Allexamples use the AdventureWorks database.,
Criando um procedimento SQL armazenado com parâmetros
- para criar um procedimento armazenado com parâmetros usando a seguinte sintaxe:
- Criar procedimento dbo.uspGetAddress @City nvarchar (30) as
- Veja detalhes e exemplos abaixo
SQL Server Query to Turn into a Stored Procedure
Below is the query we want to use to create the stored procedure.
USE AdventureWorksGOSELECT * FROM Person.AddressGO
a ideia é criar o procedimento armazenado onde a cidade é passada para o procedimento de teste para que possa criar resultados dinâmicos., Isto pode ser feito da seguinte forma: usuma variável. Se executarmos o código abaixo, ele devolverá apenas os resultados para o NewYork.
USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO
poderíamos usar esta abordagem e continuar a actualizar a variável @City, mas existe uma forma melhor de o fazer criando um procedimento armazenado.
Crie o procedimento de armazenamento do servidor SQL com um parâmetro
neste exemplo, vamos consultar a pessoa.Tabela de endereços do AdventureWorksdatabase, mas em vez de recuperar todos os registros, vamos limitá-lo a apenas uma particular escassez., Este exemplo assume que haverá uma correspondência exata sobre o valor da cidade que é passado.
USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO
esta chamada De procedimento armazenado gostaríamos de executá-lo da seguinte forma:
EXEC dbo.uspGetAddress @City = 'New York'
Excluir o Procedimento Armazenado
Se você criou o procedimento armazenado e você deseja recriar o procedimento armazenado com o mesmo nome, você pode excluí-lo usando o followingbefore tentando criá-lo novamente.
USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO
Se tentar criar o procedimento armazenado e ele já existir, irá receber uma mensagem de erro.,
There is already an object named ‘uspGetAddress’ in the database.
SQL Server Stored Procedure with Parameter using Wildcard
We can also do the same thing, but allow the users to give us a starting pointt to search the data.
Aqui podemos mudar o ” = “para um semelhante e usar o” % ” wildcard.
isto pode ser executado da seguinte forma para encontrar todas as cidades que começam com novo.,
EXEC dbo.uspGetAddress @City = 'New'
Procedimento Armazenado do SQL Server Erro Quando o Parâmetro Não Passou
Em ambos os exemplos de prosseguir assume-se que um valor de parâmetro será alwaysbe passado. Se você tentar executar o procedimento sem passar por um parametervalue você vai obter uma mensagem de erro como o seguinte:
EXEC dbo.uspGetAddress
Procedimento ou função ‘uspGetAddress’ espera o parâmetro “@Cidade”, whichwas não fornecido.,
SQL Server Stored Procedure using NULL as Default Parameter
In most cases it is always a good practice to pass in all parameter values, but sometimes it is not possible. Assim, neste exemplo, usamos a opção nula para permitir que você não passe em um valor de parâmetro. Se criarmos e executarmos este procedimento stored, como é, ele não retornará quaisquer dados, porque ele está procurando por qualquer Cityvalues que igual NULL.
USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO
se executarmos o seguinte irá funcionar, mas não serão devolvidos dados.,
EXEC dbo.uspGetAddress
Podemos alterar este procedimento armazenado e usar a função ISNULL para obter resultados. Assim, se um valor for passado, ele irá usar o valor para estreitar o conjunto de resultados e se um valor não for passado ele retornará todos os registros. (Nota: se a coluna da Cidade tiver valores nulos, estes valores não serão incluídos. Você terá que adicionar lógica adicional para a cidade é nula)
agora se executarmos o comando abaixo, todos os dados serão retornados da tabela.,
EXEC dbo.uspGetAddress
criar SQL Server Stored Procedure with Multiple Parameters
Setting up multiple parameters is very easy to do. Você só precisa listar cada parâmetro e o tipo de dados separados por uma vírgula Como mostrado abaixo.
para executar isso você pode fazer qualquer um dos seguintes:
última atualização: 4/3/2020