Usuário com melhor resposta
Procedure ou Function

Pergunta
-
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.
-
Todas as Respostas
-
-
-
-
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);}
-
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.