segunda-feira, 14 de março de 2011

Principais comandos em SQL via Procedures

No primeiro comando estaremos inserindo dados na tabela clientes através de uma procedure:


ALTER PROCEDURE [dbo].[cadastra_cliente] --nome da procedure

-- Add the parameters for the stored procedure here
@Nome VARCHAR(50)

AS
INSERT INTO

CLIENTE (Nome) -- tabela do banco

VALUES

(@Nome)

GO

A seguir excluiremos um produto da tabela PRODUTO via procedure


ALTER PROCEDURE [dbo].[excluir_produto]

             @Nome varchar (50)

AS

DELETE FROM

PRODUTO

WHERE

Nome = @Nome
GO

Agora excluiremos um cliente, porém precisamos checar se o mesmo possui algum pedido de compra de produto em andamento.


ALTER PROCEDURE [dbo].[excluir_cliente]
-- Add the parameters for the stored procedure here
@Nome varchar (50)
AS


DELETE FROM CLIENTE
WHERE NOME = @NOME
AND
(
SELECT COUNT(p.id) as qtd FROM PRODUTO p, CLIENTE c

WHERE

c.nome like @Nome

and

p.idservidor = (c.id) = 0;


GO

Agora iremos exibir os produtos em compra de um cliente


ALTER PROCEDURE [dbo].[exibe_produto_cliente]
-- Add the parameters for the stored procedure here
@Nome VARCHAR(50)
AS

SELECT p.* FROM PRODUTO p, CLIENTE c

WHERE

c.nome like @Nome

and

p.idservidor = c.id


GO


A próxima procedure iremos exibir o nome de um cliente, caso não se coloque nenhum nome, será exibido todos os nomes da tabela cliente, caso se coloque parte do nome, será exibido todos os nomes com parte daquele determinado nome.


ALTER PROCEDURE [dbo].[exibe_dados_cliente]
-- Add the parameters for the stored procedure here
@Nome varchar
AS

IF @Nome is NULL

SELECT  * FROM CLIENTE

ELSE

SELECT id, nome FROM CLIENTE

WHERE

nome Like '%' + @Nome + '%'


GO

Agora temos o codigo em C# implementando a procedure cadastra_cliente:



SqlConnection conexao = new SqlConnection("user id=dba;password=dba;Data Source=VMWINXP\\SQLEXPRESS;Initial Catalog=server;Integrated Security=False");

            try
            {
                SqlCommand comando = new SqlCommand("cadastra_cliente", conexao);
                comando.CommandType = CommandType.StoredProcedure;
              
                comando.Parameters.AddWithValue("@Nome", this.txtCliente.Text);
              
                conexao.Open();
                comando.ExecuteNonQuery();
                conexao.Close();
                MessageBox.Show("Cliente Cadastrado com Sucesso");
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.ToString());
                MessageBox.Show("Erro ao cadastrar cliente, contate o administrador do sistema");
            }
            finally
            {
                conexao.Dispose();
                conexao.Close();
            }