O documento descreve o desenvolvimento de um CRUD (criar, ler, atualizar, deletar) utilizando stored procedures no SQL Server. Ele explica o que são stored procedures, suas vantagens e sintaxe, e então demonstra como criar stored procedures para inserir, consultar, atualizar e excluir dados de uma tabela de clientes. O documento também mostra como implementar esses procedimentos em um sistema Windows Forms C# para realizar as operações CRUD na base de dados.
um breve treinamento sobre SQL e suas funcionalidades
Desenvolvimento de um CRUD utilizando Stored Procedure
1. Prof. Me. Fernando Roberto Proença
Desenvolvimento de
um CRUD utilizando
Stored Procedure
XV SEMINFO11/11/15
http://www.fespmg.edu.br/Cursos/graduacao/sistemas-de-informacao
2. Sumário
O que é Stored Procedure?
Definição, características, vantagens, sintaxe e
exemplos
Stored Procedure no SQL Server
Apresentação das Telas do Sistema
Desenvolvimento do CRUD do Sistema
utilizando Stored Procedure
2
3. Stored Procedure – Definição
Stored Procedure ou Procedimento
armazenado é um conjunto de comandos em
SQL agrupados em um Procedimento, que são
compilados e armazenados e um Banco de
Dados.
Para cada Stored Procedure é atribuído um
nome, que pode ser chamado a qualquer
momento, tanto pelo SGBD, quanto por um
sistema que tem acesso ao Banco de Dados.
3
5. Stored Procedure – Características
Possui um nome de identificação
Pode receber um ou mais parâmetros de entrada
Pode retornar diversos valores como parâmetro
de saída
Ex.: Para indicar aceitação ou falha na execução
Executa no servidor (BD)
5
6. Stored Procedure – Vantagens
Desempenho
Reduz o tráfego na rede
Melhora a performance
Segurança
Cria mecanismos de segurança
Acesso Restrito
6
7. Stored Procedure – Vantagens
Manutenção
Facilita o gerenciamento
Encapsulam comandos SQL no próprio servidor,
estando disponível para várias aplicações.
Parte da lógica do sistema pode ser armazenada
no próprio BD, em vez de ser codificada em várias
aplicações.
7
8. Stored Procedure – Sintaxe em
SQL Server
Regras:
O nome da procedure deve seguir as regras para criação
de identificadores
Nome do parâmetro deve iniciar por @ e deve ser único na
lista de argumentos, seguido do seu tipo
Ex.: @nome varchar(50), @idade int, @valor float,
Todos os parâmetros são considerados de entrada, exceto
se houver OUTPUT após sua definição.
8
CREATE PROCEDURE <nome> [parâmetro] AS
BEGIN
<instrução SQL>
END
9. Stored Procedure – Sintaxe em
SQL Server
Para uma Stored Procedure (sp) ser executada,
é necessário fazer uma chamada ao comando
EXECUTE...
9
EXEC[UTE] <nome da sp> [valor do parâmetro]
10. Exemplo de uma Stored Procedure que retorna
“Olá Mundo!!!”
Uma chamada a este procedimento seria:
Criando uma Stored Procedure em
SQL Server10
CREATE PROCEDURE OlaMundo AS
BEGIN
SELECT 'Olá Mundo!!!' AS Ola;
END
EXEC OlaMundo 5;
11. Exemplo de uma Stored Procedure que calcula a
Raiz Quadrada de um número.
Uma chamada a este procedimento seria:
Criando uma Stored Procedure em
SQL Server11
CREATE PROCEDURE RaizQuadrada @numero int AS
BEGIN
SELECT @numero * @numero AS Quadrado;
END
EXEC RaizQuadrada 5;
12. Atualizando uma Stored Procedure
em SQL Server12
Atualizando uma Stored Procedure existente:
Exemplo:
ALTER PROCEDURE RaizQuadrada @numero int AS
BEGIN
SELECT @numero * 2 AS Quadrado;
END
ALTER PROCEDURE <nome> [parâmetro] AS
BEGIN
<instrução SQL>
END
13. Excluindo uma Stored Procedure
em SQL Server13
Excluindo uma Stored Procedure:
Exemplo:
DROP PROCEDURE RaizQuadrada;
DROP PROCEDURE <nome da sp>;
16. Criando um BD e Stored Procedure
no SQL Server – Olá Mundo!!!16
1. CREATE DATABASE bdExemplo
2. USE bdExemplo
3. CREATE PROCEDURE OlaMundo
BEGIN
SELECT 'Olá Mundo!!!' AS ola;
END
EXEC OlaMundo;
17. Stored Procedure no SQL Server –
Cálculo da Raiz Quadrada17
1. CREATE PROCEDURE RaizQuadrada @numero int AS
BEGIN
SELECT @numero * @numero AS Quadrado;
END
EXEC RaizQuadrada 5;
23. Desenvolvimento do CRUD em
Windows Forms C# utilizando
Stored Procedure SQL Server
Comunicação entre Sistema e Banco de
Dados via Stored Procedure
23
24. Criando uma Tabela no BD
24
1. CREATE TABLE tblCliente (
id int identity(1,1) primary key,
nome varchar(50) NULL,
idade int NULL,
credito float NULL
)
25. Criando uma Stored Procedure com comando de
Inserção (Insert):
Executando o procedimento criado:
Stored Procedure com Comando de
Inserção25
CREATE PROCEDURE InsereCliente @nome
varchar(50), @idade int, @credito float AS
BEGIN
INSERT INTO tblCliente(nome, idade, credito)
VALUES(@nome, @idade, @credito);
END
EXECUTE InsereCliente 'Jose', 35, 100;
26. Definindo a String de Conexão com o BD
// Define String de Conexão com BD SQL Server
static String strConexao = @"Data Source=localhost; Initial
Catalog=bdExemplo; Integrated Security=True";
// Cria a Conexão com o BD
SqlConnection con = new SqlConnection(strConexao);
26
28. Criando uma Stored Procedure com comando de
Seleção (Select):
Executando o procedimento criado:
Stored Procedure com Comando de
Seleção28
CREATE PROCEDURE BuscaClientes AS
BEGIN
SELECT * FROM tblCliente;
END
EXECUTE BuscaClientes;
29. Método de Consulta – Busca Todos Clientes
void PreencheDgvClientes(){
try {
con.Open();
DataTable tabela = new DataTable();
SqlCommand cmd = new SqlCommand("EXECUTE BuscaClientes", con);
SqlDataAdapter adaptador = new SqlDataAdapter(cmd);
adaptador.Fill(tabela);
dgvClientes.DataSource = tabela;
tabControl1.SelectedTab = tabPage2;
} catch (Exception erro){
Console.WriteLine(erro.Message);
} finally {
con.Close();
}
}
29
30. Criando uma Stored Procedure com comando de
Seleção utilizando Filtros:
Executando o procedimento criado:
Stored Procedure com Comando de
Seleção utilizando Filtros30
CREATE PROCEDURE BuscaClientePorId @id int AS
BEGIN
SELECT * FROM tblCliente WHERE id = @id;
END
EXECUTE BuscaClientePorId 1;
33. Criando uma Stored Procedure com comando de
Atualização (Update):
Executando o procedimento criado:
Stored Procedure com Comando de
Atualização33
CREATE PROCEDURE AtualizaCliente @nome varchar(50),
@idade int, @credito float, @id int AS
BEGIN
UPDATE tblCliente SET nome = @nome,
idade = @idade, credito = @credito
WHERE id = @id;
END
EXECUTE AtualizaCliente 'Maria', 42, 650, 1;
34. private void btnAtualizar_Click(object sender, EventArgs e){
try {
con.Open();
SqlCommand cmd = new SqlCommand("EXECUTE AtualizaCliente
@nome, @idade, @credito, @id", con);
cmd.Parameters.Add(new SqlParameter("@nome", txtNomeA.Text));
cmd.Parameters.Add(new SqlParameter("@idade",
Convert.ToInt32(txtIdadeA.Text.Trim())));
cmd.Parameters.Add(new SqlParameter("@credito",
float.Parse(txtCreditoA.Text.Trim())));
cmd.Parameters.Add(new SqlParameter("@id",
Convert.ToInt32(txtIdCliente.Text.Trim())));
cmd.ExecuteNonQuery();
MessageBox.Show("Cliente Atualizado com Sucesso!");
}
34
Método de Atualização – Atualiza dados
do Cliente (1/2)
36. Criando uma Stored Procedure com comando de
Exclusão (Delete):
Executando o procedimento criado:
Stored Procedure com Comando de
Exclusão36
CREATE PROCEDURE ExcluiCliente @id int AS
BEGIN
DELETE FROM tblCliente WHERE id = @id;
END
EXECUTE ExcluiCliente 1;