O banco de dados MS SQL Server, assim como outros bancos de dados relacionas, nos permite trabalhar com STORED PROCEDURES.
Um Procedimento Armazenado (Stored Procedure) é um conjunto de comandos implementados na linguagem T-SQL (Transact-SQL) que ficam armazenados dentro do servidor de banco de dados, no nosso caso, no MS SQL Server.
Tais comandos, ficam armazenados no banco de dados de forma pré-compilada, aguardando que algum usuário faça a sua execução.
No exemplo que iremos trabalhar, iremos criar o banco de dados PAISES, no banco de dados PAISES criaremos a tabela TB_PAISES, com os campos (CODIGO, NOME). Além de criarmos a tabela TB_PAISES, criaremos procedimentos (Stored Procedures) para INCLUIR, ALTERAR e EXCLUIR dados na tabela. Após fazermos a ligação do banco de dados PAISES com o VB.NET, poderemos invocar os procedimentos do banco de dados (INCLUIR, ALTERAR, EXCLUIR) para manipular os dados de forma mais prática. Iniciaremos nosso trabalho criando o banco de dados PAISES, para isso acesso o SQL SERVER MANAGEMENT STUDIO EXPRESS. Com a janela do SQL MANAGEMENT STUDIO EXPRESS aberta, crie uma nova query clicando no botão NEW QUERY. A query deverá criar o banco de dados, a tabela e os procedimentos de inclusão, alteração e exclusão de dados, conforme o código abaixo: //comando para criar o banco de dados CREATE DATABASE PAISES //comando para utilizar o banco de dados paises USE PAISES //cria a tabela tb_paises CREATE TABLE TB_PAISES ( CODIGO_PAIS INT PRIMARY KEY, NOME_PAIS VARCHAR(60) ) //cria a procedure INCLUI_PAIS CREATE PROCEDURE INSERE_PAIS @CODIGO_PAIS INT, @NOME_PAIS VARCHAR(60) AS INSERT INTO TB_PAISES (CODIGO_PAIS, NOME_PAIS) VALUES (@CODIGO_PAIS, @NOME_PAIS) //cria a procedure ALTERA_PAIS CREATE PROCEDURE ALTERA_PAIS @CODIGO_PAIS INT, @NOVO_NOME_PAIS VARCHAR(60) AS UPDATE TB_PAISES SET NOME_PAIS=@NOVO_NOME_PAIS WHERE CODIGO_PAIS=@CODIGO_PAIS //cria a procedure EXCLUI_PAIS CREATE PROCEDURE EXCLUI_PAIS @CODIGO_PAIS INT AS DELETE FROM TB_PAISES WHERE CODIGO_PAIS=@CODIGO_PAIS Até agora você criou o banco de dados, a tabela e os procedimentos que irão manipular os dados, teste os procedimentos abaixo e verifique a funcionalidade dos procedimentos. //testa o procedimento INCLUI_PAIS EXEC INSERE_PAIS @CODIGO_PAIS=1, @NOME_PAIS='BRASIL' EXEC INSERE_PAIS @CODIGO_PAIS=2, @NOME_PAIS='JAPÃO' //TESTA O PROCEDIMENTO ALTERA_PAIS EXEC ALTERA_PAIS @CODIGO_PAIS=2, @NOVO_NOME_PAIS='CHINA' //TESTA O PROCEDIMENTO EXCLUI_PAIS EXEC EXCLUI_PAIS @CODIGO_PAIS=4 //Após a execução de cada teste acima, faça uma consulta à tabela para //verificar os resultados SELECT * FROM TB_PAISES Crie um novo projeto no VB.Net e vincule o banco de dados PAISES ao projeto, para isto crie um novo DATA SOURCE: os procedimentos para vinculação do projeto ao banco de dados são os mesmos já vistos nas aulas passadas, com apenas uma particularidade: - No momento de selecionar os objetos do banco de dados a serem vinculados, onde escolhíamos TABLES, iremos escolher agora TABLES e STORED PROCEDURES, conforme a imagem abaixo. Desta forma estaremos vinculando o nosso projeto ao banco de dados, suas tables e seus procedures. Feito a conexão com o banco, arraste o objeto TB_PAISES para a sua aplicação, em seguida crie 3 botões (INCLUIR, ALTERAR e EXCLUIR). O seu formulário deverá ter a aparência da imagem abaixo: Execute a sua aplicação e em seguida pare a execução. Após fazer isso, você perceberá que foi criado o componente QueriesTableAdapter, na barra de componentes localizada a esquerda da tela. Arraste o componente para o seu projeto. O componente QueriesTableAdapter é responsável por invocar os procedimentos criados no banco de dados (Inclui_pais, Altera_pais e Exclui_pais). Tais procedimentos foram criados com parâmetros, ou seja, variáveis que teremos que informar no momento que os chamamos. O código do programa ficará da seguinte forma: Observe que as variáveis CODIGO e NOME foram criadas logo no inicio, abaixo da declaração da classe FORM1, isto implica que tais variáveis pertencem a toda classe. Desta forma eu não preciso declará-las novamente dentro dos procedimentos que forem utilizá-las. Public Class Form1 Dim CODIGO As Integer Dim NOME As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'PAISESDataSet.TB_PAISES' table. You can move, or remove it, as needed. Me.TB_PAISESTableAdapter.Fill(Me.PAISESDataSet.TB_PAISES) End Sub Private Sub BTN_INCLUIR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_INCLUIR.Click CODIGO = InputBox("DIGITE O CODIGO DO PAÍS") NOME = InputBox("DIGITE O NOME DO PAÍS") Me.QueriesTableAdapter1.INSERE_PAIS(CODIGO, NOME) ATUALIZA_DADOS() End Sub Private Sub BTN_ALTERA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_ALTERA.Click CODIGO = InputBox("DIGITE O CODIGO DO PAÍS QUE DESEJA ALTERAR") NOME = InputBox("DIGITE O NOVO NOME DO PAÍS") Me.QueriesTableAdapter1.ALTERA_PAIS(CODIGO, NOME) ATUALIZA_DADOS() End Sub Private Sub BTN_EXCLUI_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_EXCLUI.Click CODIGO = InputBox("DIGITE O CODIGO DO PAÍS QUE DESEJA EXCLUIR") Me.QueriesTableAdapter1.EXCLUI_PAIS(CODIGO) ATUALIZA_DADOS() End Sub Private Sub ATUALIZA_DADOS() Me.TB_PAISESTableAdapter.Fill(Me.PAISESDataSet.TB_PAISES) End Sub Obs: observe que no final de cada procedimento (INCLUIR, ALTERAR e EXCLUIR)estamos chamando o procedimento ATUALIZA_DADOS, responsável por atualizar os dados exibidos na tela. Para isto, precisamos criar o procedimento ATUALIZA_DADOS, desta forma não precisamos utilizar o comando de atualização em todos procedimentos, basta chamar o procedimento ATUALIZA_DADOS. Assim encerramos o exemplo de como criar STORED PROCEDURES e manipular dados utilizando este recurso. Iremos tirar dúvidas e praticar mais na sala de aula.