Posted by : ghel lunes, 21 de julio de 2014

Procedimientos Almacenados


Un procedimiento es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones específicas. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.

En Transact SQL los procedimientos almacenados pueden devolver valores (numérico entero, texto, fecha, etc.) o conjuntos de resultados. Los procedimientos almacenados al estar dentro de la base de datos pueden contener un conjunto complejo de instrucciones que al utilizarlos nos reducen la complejidad de las instrucciones.


  • ■ Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE.
  • ■ Para ejecutar el procedimiento que ya esta creado se usa la orden EXECUTE
  • ■ Para declarar una variable usamos la orden DECLARE
  • ■ Para asignar valores a una variable usamos la orden SET
  • ■ Para mostrar mensajes podemos usar PRINT y SELECT
  • ■ En estos ejercicios mostraré el uso de las estructuras de control IF y WHILE
Aunque no usamos tablas ni registros, el objetivo de esta publicación es entender la creación de los procedimientos almacenados, la declaración de variables, asignación de valores y estructuras de control.


/*Crear siempre una base de datos en la cual trabajar*/
CREATE DATABASE bdProcedimientos
go
USE bdProcedimientos
go
/*Crear un procedimiento almacenado que muestre un saludo*/
CREATE PROCEDURE spSaludo
AS
BEGIN
        PRINT 'Hola Mundo'
END
go
execute spSaludo
go
/*Crear un procedimiento almacenado que muestre un saludo variante 2*/
create procedure spSaludo2
as
begin
        select 'Hola Mundo' as 'Mensaje'
end
go
execute spSaludo2
go
/*Crear un procedimiento almacenado para sumar dos números (usamos dos parametros)*/
CREATE PROCEDURE spSuma
        @dato1 INT,
        @dato2 INT
AS
BEGIN
        DECLARE @suma INT
        SET @suma = (@dato1 + @dato2)
        PRINT 'La suma es: ' + CAST(@suma as VARCHAR(50))
END
go
execute spSuma 70, 11
go
/*Hacer un procedimiento que permita calcular el area de un trapecio*/
CREATE PROCEDURE spAreaTrapecio
@bMay DECIMAL(12,4),@bMen DECIMAL(12,4),@altura DECIMAL(12,4)
AS
BEGIN
DECLARE @area DECIMAL(12,4)
SET @area = (@bMay +@bMen)*@altura/2
SELECT @area 'El area es:'
END
go
EXECUTE spAreaTrapecio 5, 6, 7
go
/*Hacer un procedimiento almacenado para dividir dos números*/
CREATE PROCEDURE spDivision
        @dato1 decimal(12,4), @dato2  decimal(12,4)
AS
BEGIN
        declare @resp decimal(12,4)
        if(@dato2=0)
                print 'ERROR en la División'
        else
        begin
                set @resp = @dato1 / @dato2
                print 'La Division es: '+cast(@resp as varchar)
        end
END
go
execute spDivision 8,7
go
/*Crear un procedimiento que funcione como una calculadora de operaciones básicas*/
CREATE PROCEDURE spCalculadora
        @dato1 DECIMAL(12,6),
        @dato2 DECIMAL(12,6),
        @operador CHAR(1)
AS
BEGIN
        DECLARE @respuesta DECIMAL(12,6)
        IF @operador = '+' 
        BEGIN
                SET @respuesta = (@dato1 + @dato2)
                PRINT 'La suma es: ' + CAST(@respuesta as VARCHAR(20))
        END
        IF @operador = '-' 
        BEGIN
                SET @respuesta = (@dato1 - @dato2)
                PRINT 'La resta es: ' + CAST(@respuesta as VARCHAR(20))
        END
        IF @operador = '*' 
        BEGIN
                SET @respuesta = (@dato1 * @dato2)
                PRINT 'La suma es: ' + CAST(@respuesta as VARCHAR(20))
        END
        IF @operador = '/' 
        BEGIN
                SET @respuesta = (@dato1 / @dato2)
                PRINT 'La división es: ' + CAST(@respuesta as VARCHAR(20))
        END
END
go
EXEC spCalculadora 8,6,'+'
go
/*Usando Transact SQL imprimir el nombre mensaje "Hola Mundo"  10 veces*/
CREATE PROCEDURE spHolaMundo
AS
BEGIN
        DECLARE @num INT
        SET @num = 1 --Incializar el contador
        WHILE @num<= 10
        BEGIN
                PRINT 'Hola Mundo'
                SET @num = @num + 1 --Actualizar el contador en mas uno
        END
END
go
EXECUTE spHolaMundo;
go
/* Mostrar una lista de numeros elevados al cuadrado hasta n: 1, 4, 9, 16, 25, 36, 49, 64, 81 ... */
CREATE PROCEDURE spCuadrados
        @limite AS INT
AS
BEGIN
        DECLARE @num INT, @resp INT
        SET @num = 1 --Incializar el contador
        WHILE @num<= @limite
        BEGIN
                SET @resp = @num * @num
                PRINT 'El ' + CAST(@num AS VARCHAR) + ' al cuadrado es '+ CAST(@resp AS VARCHAR)
                SET @num = @num + 1 --Actualizar el contador en mas uno
        END
END
go
EXEC spCuadrados 7;
go
/* Hacer un procedimiento almacenado para mostrar la tabla de multiplicar de cualquier numero por ejemplo si necesitamos la tabla de multiplicar del 7, la respuesta será:
1x7=7
2x7=14
...
11x7=77
12x7=84 */
CREATE PROCEDURE spTablaMutiplicar
        @dato AS INT
AS
BEGIN
        DECLARE @num INT, @resp INT
        SET @num = 1 --Incializar el contador
        WHILE @num<= 12
        BEGIN
                SET @resp = @num * @dato
                PRINT CAST(@num AS VARCHAR) + ' x '+ CAST(@dato AS VARCHAR)  + ' = '+CAST(@resp AS VARCHAR)
                SET @num = @num + 1 --Actualizar el contador en mas uno
        END
END
go
EXEC spTablaMutiplicar 8;
go
/*Crear un procedimiento almacenado para mostrar los terminos de la serie fibonacci menores a m*/
CREATE PROCEDURE spFibonacci
        @m int
as
Begin
        declare @a int
        declare @b int
        declare @c int
        set @a = 1
        set @b = 1
        while @a < @m
        begin
                print 'El valor: ' + cast(@a as varchar)
                set @c = @a+@b
                set @a = @b
                set @b = @c
        end
End
go
EXECUTE spFibonacci 100
go





Leave a Reply

Subscribe to Posts | Subscribe to Comments

Bienvenido a mi Blog

ZONA DE TRABAJO

DOCUMENTOS
...............................................
Archivos Compartidos
...............................................
Elementos Gráficos
...............................................
Video y Captura de Pantalla

Angel

Contenidos Populares

About

Angel Moreano Terrazas.