No artigo - ADO - Usando procedimentos armazenados - mostramos como usar uma SP (Stored Procedure) em um banco de dados SQL Server , vamos dar continuidade ao artigo indo um pouco além.
Vamos examinar outra SP armazenada no banco de dados SQL Server ( estou usando a versão 2000 para desktop ) . A escolhida foi a SP - CustOrdersOrders , siga os passos:
Fig 1.0 - Enterprise Manager exibindo as Stored Procedures armazenadas no banco de dados Northwind |
|
|
Fig 2.0 - A SP CustOrdersOrders | Fig 3.0 - A janela Stored Procedure Properties - exibindo a SP |
Como podemos observar que SP CustOrdersOrders possui um parâmetro de entrada : @CustomerID nchar(5).
Os parâmetros de entrada são valores que enviamos a um procedimento armazenado , eles podem ser de qualquer tipo de dados suportado pela T-SQL . Vamos debulhar o código desta SP ; vejamos linha a linha:
Na primeira linha , temos a palavra-chave CREATE PROCEDURE seguida do nome CustOrderOrders. Isto irá criar uma SP com o nome indicado.
Na segunda Linha temos o parâmetro de entrada : @CustomerID nchar(5) . Ele é definido como sendo do tipo nchar(5) - um tipo de dados caractere de tamanho fixo igual a 5 - . Se houvesse mais de um parâmetro eles deveriam ser separados por vírgulas.
Na linha 3 temos a cláusula AS
Na linha 4 temos o corpo da SP : Aqui usamos o parâmetro de entrada para selecionar os dados da tabela (FROM) Orders onde o código do cliente (CustomerID) for igual ao parâmetro informado - @CustomerID . Os registros são classificados por ordem pelo campo OrderID ( ORDER BY OrderID)
Escolhemos esta SP pela sua simplicidade , mas as SP podem ser muito complexas , com muitos parâmetros de entrada com muitas opções de seleção.
Os parâmetros de saída são usados para retornar valores de uma SP . Usamos os parâmetros de saída quando desejamos retornar valores únicos e não um conjunto de registros (Recordset). Podemos usar qualquer tipo de dados T-SQL nos parâmetros de saida exceto os tipos : text , ntext e image.
Vamos criar uma SP usando um parâmetro de saida para exemplificar. Iremos usar a tabela Orders e desejamos obter as últimas datas de embarque ShippedDate efetuadas para o Brazil . Vamos chamar esta SP de ShippingBrazil. Nosso parâmetro de saída será a coluna ShippedDate .
O código para criar nossa SP é o seguinte:
CREATE PROCEDURE ShippingBrazil
@ShippedDate datetime OUTPUT AS SELECT @ShippedDate = MAX(ShippedDate) FROM Orders WHERE ShipCountry = 'Brazil' |
Observe nosso parâmetro de saida declarado usando a palavra-chave OUTPUT - @ShippedDate datetime OUTPUT.
A instrução a seguir irá selecionar ( SELECT ) as últimas datas de embarques ( @ShippedDate = MAX(ShippedDate) ) da tabela Orders quando o país for o Brasil - WHERE ShipCountry = 'Brazil'
Podemos usar a ADO para recuperar o parâmetro de saída usando a coleção Parameters do objeto Command.
Vimos na primeira parte deste artigo como chamar uma SP usando ADO . Nossa SP não possuía nenhum parâmetro de entrada nem de saída. Que tal mostrar como chamar a SP CustOrdersOrders comentada no ínicio deste artigo ?
A SP CustOrdersOrders possui um parâmetro de entrada e retorna um Recordset . Para chamar um procedimento armazenado deste tipo com ADO podemos usar o método Execute , assim:
O código completo é o seguinte:
Private Sub Command1_Click() |
As linhas em AZUL executam o serviço completo ; o parâmetro de entrada usado aqui foi o codigo do cliente (CustomerID) QUICK . Note que usamos o método EXECUTE seguido do nome da SP e do parâmetro de entrada - QUICK.
Teremos como retorno um Recordset obtido com a seguinte cláusula SELECT :
Exibimos o código do pedido OrderID e a data do pedido OrderDate na em uma caixa de listagem
O resultado é exibido na figura abaixo:
Nossa próxima etapa será como criar um procedimento armazenado no SQL Server, até lá...
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: