none
Procedure ou Function RRS feed

  • Pergunta

  • O que é mais recomendado para dar insert em uma tabela?  Uma procedure ou uma function? qual é mais rápido.


    O objetivo é passar os parâmetros, dar o insert e retornar o ID cadastrado
    sábado, 17 de fevereiro de 2007 23:52

Respostas

  • Sobre a diferença entre functions e procs:

    1 - É mais complicado ficar chamando um  proc dentro de outra proc ou function e manipular seu retorno do que chamar uma function dentro de outra proc ou function. Isso chama-se reusabilidade, a a function é mais versátil nesse aspecto.

    2 - Manipulaçào do banco: functions, geralmente (depende do servidor), não podem manipular dados de tabelas, exceto temporárias. Já as procs, podem criar tabelas e alterar dados.

    3 - A proc permite ter o controle das transações usando um bloco BEGIN TRANSACTION...... COMMIT (ou ROLLBACK) TRANSACTION. Isso permite assegurar a integridade do banco.

    Por default, use procs, a menos que vc queira fazer algo cuja solução seja mais fácil com functions.

    quinta-feira, 22 de fevereiro de 2007 20:36
  • A procedure é feita para isso.

    Com a função você não pode nem realizar inserts

    domingo, 18 de fevereiro de 2007 14:15

Todas as Respostas

  • A procedure é feita para isso.

    Com a função você não pode nem realizar inserts

    domingo, 18 de fevereiro de 2007 14:15
  • Tem algum lugar que explica essa diferênca, entre procedure e Function, quando usar uma e quando usar outra?
    domingo, 18 de fevereiro de 2007 15:52
  • Se voce procurar por "CREATE FUNCTION" no Books Online ele te dá exatamente o que pode e o que não pode ser feito dentro de uma função



    domingo, 18 de fevereiro de 2007 15:56
  • Procurei, porém no books online explica apenas os tipos de Functions ou Procedures existentes não fala a diferênça entre eles.

    Queria saber quando é recomendado usar uma e quando é recomendada usar a outra.

    Por exemplo, estou desenvolvendo uma procedure para insert em uma tabela, e essa procedure deverá retornar o código PK do registro inserido. Já descobri que a procedure é melhor para realizar essa tarefa. Até porque function não aceita comando insert, acho que foi você mesmo que me explicou. Agora queria saber em que situações usarei uma function.

    Uma outra duvida, é que estou tentando executar uma procedure no meu sistema, em C#, e como fazer para pegar o valor retornado pela procedure?

    Por enquanto meu codigo está assim:

    SqlCommand sComand = new SqlCommand("uspInsertUF",sCon,sTran);

    sComand.CommandType = CommandType.StoredProcedure;

    sComand.Parameters.Add("@SGLUF",SqlDbType.Char,3);

    sComand.Parameters.Add("@NOMUF",SqlDbType.VarChar,70);

    sComand.Parameters.Add("@OBSUF",SqlDbType.Text);

    sComand.Parameters.Add("@CODUF",SqlDbType.Int,3);

    sComand.Parameters["@SGLUF"].Value = txtSglUF.Text;

    sComand.Parameters["@NOMUF"].Value = txtNomUF.Text;

    sComand.Parameters["@OBSUF"].Value = "";

    sComand.Parameters["@CODUF"].Value = 0;

    try

    {

    sComand.ExecuteNonQuery();

    }

    catch (Exception erro)

    {

    MessageBox.Show("Erro: " + erro.Message + " Source: " + erro.Source);

    }

    domingo, 18 de fevereiro de 2007 16:27
  • Sobre a diferença entre functions e procs:

    1 - É mais complicado ficar chamando um  proc dentro de outra proc ou function e manipular seu retorno do que chamar uma function dentro de outra proc ou function. Isso chama-se reusabilidade, a a function é mais versátil nesse aspecto.

    2 - Manipulaçào do banco: functions, geralmente (depende do servidor), não podem manipular dados de tabelas, exceto temporárias. Já as procs, podem criar tabelas e alterar dados.

    3 - A proc permite ter o controle das transações usando um bloco BEGIN TRANSACTION...... COMMIT (ou ROLLBACK) TRANSACTION. Isso permite assegurar a integridade do banco.

    Por default, use procs, a menos que vc queira fazer algo cuja solução seja mais fácil com functions.

    quinta-feira, 22 de fevereiro de 2007 20:36