Os procedimentos armazenados são como pequenos programas em miniaturas que ficam 'dentro' do banco de dados prontos para serem usados. Geralmente uma stored procedure(sp) consiste em instruções SQL que realizam tarefas como selecionar , inclui , alterar e excluir dados.
Para saber mais sobre stored procedures leia os artigos :
Neste artigo vou mostrar como podemos acessar e usar uma stored procedure no SQL Server via VB .NET. Vou usar o banco de dados Teste e a tabela Clientes. A idéia é criar um sp que selecione os registros da tabela Clientes para qual o campo cidade for igual a cidade que iremos informar como parâmetro.(recebido de uma combobox) : Select CódigoDoCliente , NomeDaEmpresa , NomeDoContato , Endereço, Cidade from Clientes Where Cidade like "%" + @cidade + "%"
Nota: Na utilização de parâmetros podemos estabelecer uma ligação entre a stored procedure e o ambiente externo. Eles podem ser considerados como de entrada (input) quando recebem dados do programa mas se usarmos a palavra Output na definição do parâmetro ela pode retornar o valor atual do parâmetro para o programa que a chamou.
Vou cria a stored procedure no SQL Server usando o Enterprise Manager. Siga o roteiro :
|
A nossa sp será bem simples e aceitará um parâmetro - @cidade - que será passada para a consulta. Vou chamar a sp de : SelecionaClientesPorCidade e tem o seguinte código:
Acima temos a nossa sp criada na relação de stored procedures do SQL Server. |
Nossa próxima etapa será mostrar como usar a stored procedure criada no banco de dados Teste. Uma das vantagens em utilizar uma sp é que ela é pré-compilada antes de ser armazenada como um objeto no banco de dados.
Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
No formulário padrão insira os seguintes componentes : um DataGrid - DataGrid1 - , um combobox - combobox1 , um label -label1, um button - button1; conforme veja figura abaixo.
No evento Load do formulário - form1.vb - vamos colocar o código que irá carregar a combobox com algumas opções de cidades para o usuário selecionar:
Private
Sub Form1_Load(ByVal
sender As System.Object, ByVal e
As System.EventArgs) Handles
MyBase.Load
ComboBox1.Items.Add("São Paulo") ComboBox1.Items.Add("Madrid") ComboBox1.Items.Add("London") ComboBox1.Items.Add("Berlin") ComboBox1.Items.Add("Buenos Aires") ComboBox1.Items.Add("Barcelona") 'seleciona a primeira opção ComboBox1.SelectedIndex = 0 End Sub |
A seguir no evento click do botão de comando - button1 -vamos colocar o código que irá executar a nossa stored procedure:
Private
Sub Button1_Click(ByVal
sender As System.Object, ByVal e
As System.EventArgs) Handles Button2.Click
Dim ds_sp As DataSet Dim conexao As SqlConnection Dim da_sp As SqlDataAdapter
If ComboBox1.SelectedItem <> "" Then 'cria a conexão com o banco de dados Teste conexao = New SqlConnection("server=(local);Trusted_Connection=yes;database=Teste")
da_sp = New SqlDataAdapter("SelecionaClientesPorCidade", conexao) 'define o tipo stored procedure da_sp.SelectCommand.CommandType = CommandType.StoredProcedure 'define o tipo de dados do parâmetro a ser recebido da_sp.SelectCommand.Parameters.Add(New SqlParameter("@cidade", SqlDbType.VarChar, 30)) 'recebe o parâmetro selecionado na combobox da_sp.SelectCommand.Parameters("@cidade").Value = Trim(ComboBox1.SelectedItem)
ds_sp = New DataSet()'preenche o dataset com os dados da sp da_sp.Fill(ds_sp, "SelecionaClientesPorCidade")
'exibe os dados no datagrid DataGrid1.DataSource = ds_sp.Tables("SelecionaClientesPorCidade").DefaultView
da_sp.Dispose() conexao.Close() Else MsgBox("Informe um nome de cidade válido ! ", MsgBoxStyle.Critical) End If End Sub |
No código acima eu estou usando um objeto DataSet para receber os dados via DataAdapter e exibí-los em um DataGrid.
Ao executar o projeto e selecionar uma cidade , clicando a seguir no botão de comando teremos a seleção dos dados conforme definido na stored procedure:
Simples , não é mesmo ??? Mas e seu eu quiser criar a stored procedure via código ? Como vou fazer isto ?
Vamos excluir a stored procedure -SelecionaClientesPorCidade - criada no banco de dados Teste e a seguir vamos usar um código VB.NET para criar a mesma stored procedure. Para criarmos a storede procedure vamos ter que verificar se ela já existe no banco de dados.
No projeto anterior vamos incluir um botão de comando - button2 - no formulário e no evento Click vamos incluir o seguinte código que irá criar a stored procedure:
Private
Sub Button2_Click(ByVal
sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim conexao As SqlConnection Dim comando As SqlCommand Dim dr_cria_sp As SqlDataReader
conexao = New SqlConnection("server=(local);Trusted_Connection=yes;database=Teste")
comando = New SqlCommand("select * from sysobjects where name ='SelecionaClientesPorCidade' and sysstat & 0xf=4", conexao)
comando.CommandType = CommandType.Text comando.Connection.Open()
dr_cria_sp = comando.ExecuteReader
If Not dr_cria_sp.Read Then comando.CommandText = "CREATE PROCEDURE SelecionaClientesPorCidade(@cidade varchar(30))" & _ " AS" & _ " Select CódigoDoCliente , NomeDaEmpresa , Cidade from Clientes" & _ " Where Cidade like @cidade"
dr_cria_sp.Close() comando.ExecuteNonQuery() MsgBox(" A stored procedure foi criada com sucesso !", MsgBoxStyle.Critical) Else dr_cria_sp.Close() MsgBox(" A stored procedure já existe no banco de dados !", MsgBoxStyle.Critical) End If
comando.Dispose() conexao.Close() End Sub |
Estamos usando o objeto DataReader para criar a stored procedure via código; a linha de código :
comando = New SqlCommand("select * from sysobjects where name ='SelecionaClientesPorCidade' and sysstat & 0xf=4", conexao)
verifica se stored procedure já existe no banco de dados , e , o código abaixo :
comando.CommandText = "CREATE PROCEDURE SelecionaClientesPorCidade(@cidade varchar(30))" & _
" AS" & _
" Select CódigoDoCliente , NomeDaEmpresa , Cidade from Clientes" & _
" Where Cidade like @cidade"
cria a stored procedure no banco de dados Teste , conforme indica a mensagem exibida pelo aplicativo:
|
|
Após criar a stored procedure basta verificar se ela esta funcionando e acionar o código do botão - Executa Stored Procedure. Você vai ver que funciona...
Na continuação deste artigo vou falar sobre stored procedures no Access 2000 (é isto mesmo, no Access 2000) , 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: