SQL Server Parâmetros de procedimento armazenados
no tutorial anterior, você aprendeu como criar um procedimento simples armazenado que envolve uma declaração SELECT
. Quando você chama este procedimento armazenado, ele simplesmente executa a consulta e retorna um conjunto de resultados.
neste tutorial, vamos estender o procedimento armazenado que lhe permite passar um ou mais valores para ele. O resultado do procedimento armazenado irá mudar com base nos valores dos parâmetros.,Criar um procedimento armazenado com um parâmetro
a consulta A seguir retorna uma lista de produtos a partir de products
tabela no banco de dados de exemplo:
Você pode criar um procedimento armazenado que envolve essa consulta usando o CREATE PROCEDURE
declaração:
Code language: SQL (Structured Query Language) (sql)
no Entanto, desta vez, podemos adicionar um parâmetro para o procedimento armazenado para encontrar os produtos cujos preços são maiores do que uma entrada preço:
neste exemplo:
- Primeiro, nós adicionamos um parâmetro chamado
@min_list_price
uspFindProducts
procedimento armazenado., Cada parâmetro deve começar com o sinal@
. TheAS DECIMAL
keywords specify the data type of the@min_list_price
parameter. O parâmetro deve ser rodeado pelos parêntesis de abertura e fecho. - Segundo, usamos
@min_list_price
parâmetroWHERE
cláusula deSELECT
instrução para filtrar apenas os produtos cujos preços são maiores do que ou igual a@min_list_price
.,
a Executar um procedimento armazenado com um parâmetro
Para executar o uspFindProducts
procedimento armazenado, você passar um argumento para ele como se segue:
Code language: SQL (Structured Query Language) (sql)
O procedimento armazenado retorna todos os produtos cujos preços são maiores do que ou igual a 100.,
Se você alterar o argumento de 200, você vai obter um conjunto de resultados diferentes:
Code language: SQL (Structured Query Language) (sql)
a Criação de um procedimento armazenado com parâmetros múltiplos
procedimentos Armazenados pode ter um ou mais parâmetros. Os parâmetros são separados por vírgulas.,iv> procedimento armazenado pela adição de mais um parâmetro chamado @max_list_price
para:
uma Vez que o procedimento armazenado é modificada com êxito, você pode executá-lo passando dois argumentos, um para @min_list_price
e o outro para o @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
A seguir mostra a saída:
Usando parâmetros com nome
No caso de procedimentos armazenados tem vários parâmetros, é melhor e mais claro para executar os procedimentos armazenados usando parâmetros nomeados.,
Por exemplo, a instrução a seguir executa o uspFindProducts
procedimento armazenado usando os parâmetros nomeados @min_list_price
e @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
O resultado do procedimento armazenado é o mesmo, no entanto, a declaração é mais óbvio.
criando parâmetros de texto
a seguinte declaração adiciona o parâmetro @name
como um parâmetro de cadeia de caracteres ao procedimento armazenado.,
WHERE
cláusula de SELECT
instrução, adicionamos o seguinte condição:
Code language: SQL (Structured Query Language) (sql)
Por isso, o procedimento armazenado retorna os produtos cujos preços estão na faixa de min e max preços de lista e os nomes dos produtos também contêm um pedaço de texto que você passar.,
uma Vez que o procedimento armazenado é alterada com êxito, você pode executá-lo da seguinte forma:
nesta declaração, usamos o uspFindProducts
procedimento armazenado para encontrar os produtos cujos preços estão na faixa de 900 e 1.000 e seus nomes contêm a palavra Trek
.,
a imagem A seguir mostra a saída:
a Criação de parâmetros opcionais
Quando você executa o uspFindProducts
procedimento armazenado, você deve passar todos os três argumentos correspondentes aos três parâmetros.o servidor
SQL permite-lhe indicar os valores por omissão para os parâmetros, para que, quando invocar os procedimentos armazenados, possa ignorar os parâmetros com os valores por omissão.,
Veja o procedimento armazenado seguinte:
este procedimento armazenado, indicamos 0
como o valor padrão para o @min_list_price
parâmetro e 999,999
como o valor padrão para o @max_list_price
parâmetro.,
Once the stored procedure is compiled, you can execute it without passing the arguments to @min_list_price
and @max_list_price
parameters:
Code language: SQL (Structured Query Language) (sql)
In this case, the stored procedure used 0
for @min_list_price
parameter and 999,999
for the @max_list_price
parameter when it executed the query.,
The@min_list_price
and@max_list_price
parameters are called optional parameters.
claro, Você também pode passar os argumentos para os parâmetros opcionais., Por exemplo, a instrução a seguir retorna todos os produtos cujos preços estão maior ou igual a 6,000
e os nomes contêm a palavra Trek
:
Code language: SQL (Structured Query Language) (sql)
Usar NULL como o valor padrão de
uspFindProducts
procedimento armazenado, nós usamos 999,999
como padrão máximo de lista de preços. Isto não é robusto porque no futuro você pode ter produtos com os preços da lista que são maiores do que isso.,
Uma técnica comum para evitar isso é usar NULL
como o valor padrão para os parâmetros:
WHERE
cláusula, nós mudamos a condição para processar NULL
valor @max_list_price
parâmetro:
Code language: SQL (Structured Query Language) (sql)
a instrução A seguir executa o uspFindProducts
procedimento armazenado para encontrar o produto cuja lista de preços é maior ou igual a 500 e nomes contêm a palavra Haro
.,
Code language: SQL (Structured Query Language) (sql)
neste tutorial, você aprendeu como criar e executar procedimentos armazenados com um ou mais parâmetros. Você também aprendeu como criar parâmetros opcionais e usar NULL como os valores padrão para os parâmetros.