SQL Server Stored Procedure with Parameters (Português)


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

  1. para criar um procedimento armazenado com parâmetros usando a seguinte sintaxe:
  2. Criar procedimento dbo.uspGetAddress @City nvarchar (30) as
  3. 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.,

Msg 2714, Level 16, State 3, Procedure uspGetAddress, Line 1
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
Msg 201, Nível de 16, Estado 4, Procedimento uspGetAddress, Line0
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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *