sábado, 5 de diciembre de 2009

Procedimientos Almacenados en SQL SERVER 2008

Pues bien empezemos conociendo algo acerca de los procedimientos almacenados que tiene SQL SERVER, hace poco tiempo nos metimos de lleno al manejo de ASPX y Base de Datos SQL SERVER 2008, para mejorar nuestro estilo de programación decidimos aprender Store Procedures ó Procedimientos Almacenados..

Que son procedimientos Almacenados: Es un conjunto de codigo puro del lenguaje que utilizamos dentro de las bases de datos como por ejemplo: create table, insert into, Select from. Que se almacena fisicamente en la base de datos y de la misma forma se exportan cuando creamos una copia de seguridad de nuestra base de datos.

Como funcionan: Los procedimientos almacenados se basan en una estructura definida por SQL SERVER

Iniciamos con:
  • CREATE PROCEDURE nombre_del_procedimiento @variables tipo(longitud) }
  • AS
  • BEGIN
  • Todo el codigo puro de base de datos
  • END

Como probamos: Esto es lo más fácil de realizar solo necesitamos lo siguiente:

Escribimos EXEC nombre_del_procedimiento ' variables',12,' variables'

Nota: Cabe destacar que no necesariamente se deben definir variables en el caso de un Select * From solo pondremos EXEC y nombre del procedimiento

Vamos a realizar un ejemplo donde aplicaremos lo antes aprendido
  • Creemos un base de datos con el nombre que decidamos
  • Creemos la siguiente tabla

  • Ahora definimos el procedimiento almacenado para insertar un nuevo registro(Recordemos que todo lo que esta dentro del Begin puede ser cualquier sentencia de código puro de SQL SERVER: Insert into, Delete From, Update set, etc)
  • Ejecutamos el cogido y ahora probamos con los siguientes datos:

Codigo: 001

Nombre: Fabian

Apellido: Bermeo

Edad: 19

Universidad: Tecnológico Sudamericano

  • Ejecutamos el procedimiento almacenado con los datos anteriores tomando en consideración que: los campos tipo int se envian sin comilla el resto dentro de comilla.
  • Para ejecutar el procedimiento almacenado escribimos EXEC + el nombre del procedimiento + las variables si fuera el caso y clic en ejecutar

  • Ahora revizamos en nuestra tabla y tenemos lo siguiente:

  • Como podemos ver funciona sin ningun problema

Nota: Todas las sentencias de SQL SERVER se pueden enviar dentro de un procedimiento almacenado, inclusive inner joins, busquedas &like entre otras.

Siguiente clase:

Aprenderemos a invocar store procedures desde ASPX

8 comentarios:

Daniel Petrucci dijo...

Se puede usar código iterativo dentro de un procedimiento almacenado, por ejemplo poner un for( ... ){}, cosas asi ? Gracias.

Comunidad .Net Geek's Microsoft dijo...

Hola @Daniel no podemos realizar codigo iterativo dentro de los procedimientos, para realizar iteraciones debes usar indices y secuencias

miguel dijo...

buena explicada simple y completa XD

Sarah dijo...

cuando uno de los campos es autoincrementable como se llena el campo?

Comunidad .Net Geek's Microsoft dijo...

en mysql le mandas un 0 en sql server dejas el campo vacio y los demás campos llenos, ejemplo si tienes una tabla clientes con el id tipo identity(0,1), nombre,apellido el insert seria insert into clientes values(auxnom,auxape)

Comunidad .Net Geek's Microsoft dijo...

gracias @miguel esperamos ser siempre de ayuda (Y)

Marcelo Amigo dijo...

Y Si tengo que hacer un mantenedor?, onda así como que hayan datos en la base de datos y se pida que ingrese un id_tarjeta y una fecha y con eso mostrar los datos del numero_patente del bus, nombre del chofer del bus y mostrar los nombres de los paraderos y las comunas donde ha transitado este bus

Comunidad .Net Geek's Microsoft dijo...

es muy facil @Marcelo, recuerda que un procedimiento almacenado es sql puro, primero trabaja en la consulta con un select cuando lo definas alli le aplicas como un procedimiento me explico:

Select t.emp_transporte,mt.tra_hora
from transporte t, movimientos_transporte mt
where
t.bus_id = mt.bus_id and
t.bus_id = '12'

luego cuando yo ya tengo definido lo que quiero hacer aplico el procedimiento

create procedure consultando_transporte
@bus_id nvarchar(11)
as
begin
Select t.emp_transporte,mt.tra_hora
from transporte t, movimientos_transporte mt
where
t.bus_id = mt.bus_id and
t.bus_id = @bus_id
end

//inclusive puedes hacer insert luego un update un select solo recuerda colocar un ";" luego de cada estructura sql para que el motor pueda diferenciarlo

Publicar un comentario en la entrada