MySQL - Stored Procs com parametros out

<< Click to Display Table of Contents >>

Navigation:  Banco de dados >

MySQL - Stored Procs com parametros out

Previous pageReturn to chapter overviewNext page

No banco

 

Função insere o cliente e retorna o código inserido

 

CREATE DEFINER = 'root'@'localhost' PROCEDURE `inserir_cliente`(

        IN inome VARCHAR(50),

        IN icpf VARCHAR(11),

        IN iemail VARCHAR(50),

        IN isexo CHAR(1),

        IN idata DATE,

        IN iestado_civil CHAR(1),

        OUT oid INTEGER(11)

    )

    NOT DETERMINISTIC

    CONTAINS SQL

    SQL SECURITY DEFINER

    COMMENT ''

BEGIN

  INSERT INTO `tb_cliente`(`id_cliente`, `nome`, `cpf`, `email`, `sexo`,

      `data`, `estado_civil`) VALUE (id_cliente, inome, icpf, iemail, isexo,

       idata, iestado_civil);

 

  -- retorna ultimo valor no parametro de saida

  select

    LAST_INSERT_ID()

    into oid;

END;

 

Na programação

 

// cria uma conexao

MySqlConnection conexao = new MySqlConnection("connection string");

var cliente = new { Id = 0, Nome = "", Cpf = "" };

 

// cria um command (no sql é o nome da stored proc)

MySqlCommand cmd = new MySqlCommand("inserir_cliente", conexao);

cmd.CommandType = CommandType.StoredProcedure;

 

// definindo parametros de entrada da stored proc

cmd.Parameters.AddWithValue("iid", cliente.Id);

cmd.Parameters.AddWithValue("inome", cliente.Nome);

cmd.Parameters.AddWithValue("icpf", cliente.Cpf);

 

// configurando parametros de saída

cmd.Parameters.Add("oid", MySqlDbType.Int32);

cmd.Parameters["oid"].Direction = ParameterDirection.Output;

 

try

{

    // sempre usar ExecuteNonQuery para parâmetros de saída

    cmd.ExecuteNonQuery();

    int id_gerado = Convert.ToInt32(cmd.Parameters["oid"].Value);

}

 

catch (Exception)

{

    // ....

}