Para que los Store Procedures?

Iniciado por HadesDark, 29 Julio 2008, 18:16 PM

0 Miembros y 1 Visitante están viendo este tema.

HadesDark

Hola, hace poco empecé  a programar en C# usando como gestor de BD MSSQL Server, pero tengo una duda, como se crea un store procedure? y para que sirve realmente?,he buscado por internet pero no me queda realmente claro como crearlo (he visto demasiadas formas y no me queda clara la cosa) y porque/cuando hacer uso de un Store procedure, agradezco la ayuda que me puedan brindar.

Hadess_inf

Hola los procedure son como su nombre lo indica procedimientos, no hace falta decir que los procedimientos los creamos en el SQL Server y los llamamos ya sea desde el mismo servidor como desde el lenguaje de programacion ( en este caso VB ). Segun mi experiencia son muchas las ventajas que nos dan estos procedures, citare 2 por el momento.

1) Evita generar demasiado codigo en VB, basta con crear nuestro procedure en SQL y llamarlo en VB.
2) Imagina que necesitas insertar 1000 registros. Si vas insertando esos registros desde tu VB tomara un tiempo considerable porque tendrias que crear 1 sqlcommand por registro ademas que en algunos casos tendras que enviar parametros como son nombres..apellidos..etc..., en cambio si usas un procedimiento que haga todo ese trabajo los registros se insertaran ya no desde VB sino en el mismo servidor SQL, la idea de esto es solamente llamar al procedimiento y ejecutarlo.

Se entendio ?¿?

:huh: :huh: :huh:

HadesDark

Muchas gracias por la explicación, me quedo claro su uso, pero otra cosita, de casualidad tienes un ejemplo de un store procedure bien formado? es que he visto varios ejemplos donde lo hacen de diferentes formas :S. Gracias de nuevo.

Hadess_inf

#3
Un procedimiento que inserte un registro:

CitarEn SQL
Create procedure sp_inserta
@nom varchar(20),
@ape varchar(20),
telf varchar(9)
as
insert into empleado values (@nom,@ape,@telf)
go

CitarEn Net
dim par as sqlparameter 'lo usamos para enviar los parametros en este caso nom,ape,telf.
dim cmd as new sqlcommand("sp_inserta",con) 'desde aqui invocaras la comsulta
cmd.commandtype=Data.CommandType.StoredProcedure 'le dices que es un procedimiento almacenado

'ahora procedemos a agregar o enviar los parametros, aqui lo puedes hacer de dos formas:
1) Forma corta
cmd.Parameters.AddWithValue("@nom",textbox1.text)
cmd.Parameters.AddWithValue("@ape",textbox2.text)
cmd.Parameters.AddWithValue("@telf",textbox3.text)

2) Forma larga :: usamos sqlparameter
par =  new sqlparameter ("@nom",Data.SqlDbType.VarChar,20)
par.value = textbox1.text
cmd.parameters.add ( par )

par =  new sqlparameter ("@ape",Data.SqlDbType.VarChar,20)
par.value = textbox2.text
cmd.parameters.add ( par )

par =  new sqlparameter ("@telf",Data.SqlDbType.VarChar,20)
par.value = textbox3.text
cmd.parameters.add ( par )

'y finalmente ejecutamos el procedimiento
cmd.executenonquery()

Espero sirva.
Un Saludo.