[SQL] Como planear un Procedimiento almacenado en SQL Server 2008 (Creación y ejecución).


Saludos amigos, no se si sea realmente el nombre correcto para este post, le idea es que a partir de una sentencia SQL (Select, Insert, Update, Delete, Etc) puedan lograr parametrizar la consulta  y posteriormente elaborar su procedimiento almacenado.

Paso 1. Sentencia SQL a ejecutar.

USE prueba;
GO

INSERT INTO dbo.DEMO_PRODUCTO (nombre, precio, descripcion, fecha)
VALUES('Whisky', 275.50,'12 Años de añejamiento, promoción 2x1',GETDATE());
GO

SELECT TOP 1 * FROM dbo.DEMO_PRODUCTO ORDER BY id DESC;
GO

image

Nota: deben de asegurarse que la sentencia SQL que ejecuten se realice correctamente.

Paso 2. Parametrizar la Sentencia SQL.

Por cada uno de los campos que se requieren al insertar (para el caso de este ejemplo), deben de convertirse en variables T-SQL con el tipo de dato correspondiente, asignarles el valor del campo a Insertar y sustituirlos en la sentencia SQL.

USE prueba;
GO

DECLARE @producto varchar(100), 
        @precio smallmoney, 
        @descripcion varchar(750);
        
SET @producto = 'Agua mineral';
SET @precio = 12.50;
SET @descripcion = 'Agua mineral de 2 litros';

INSERT INTO dbo.DEMO_PRODUCTO (nombre, precio, descripcion, fecha)
VALUES(@producto, @precio,@descripcion,GETDATE());
GO

SELECT TOP 2 * FROM dbo.DEMO_PRODUCTO ORDER BY id DESC;
GO    

image

Paso 3. Convertir el Bacth T-SQL a Procedimiento almacenado.

Ya que tenemos la sentencia parametrizada, el paso final es convertirla en procedimiento almacenado, para esto tenemos que agregar la estructura de un “STORE PROCEDURE – SP”  de SQL Server 2008 como lo muestra el siguiente ejemplo:

CREATE PROCEDURE <Procedure_Name, sysname, Procedure_Name>
    <@param1, sysname, @p1> <datatype_for_param1, , int> = <default_value_for_param1, , 0>, 
    <@param2, sysname, @p2> <datatype_for_param2, , int> = <default_value_for_param2, , 0>
AS
    <Instrucciones T-SQL (Insert, Select, Update, Delete, ETC)>
GO

La primera parte es asignarle un nombre al SP.

La Segunda parte es crear los parámetros que recibirá el SP.

Como tercera parte es crear el Batch de T-SQL que se ejecutara al llamar a nuestro SP.

Ejemplo:

image 

El código:

CREATE PROCEDURE InsertaProductoSP
    @producto varchar(100), 
    @precio smallmoney, 
    @descripcion varchar(750)
AS
    INSERT INTO dbo.DEMO_PRODUCTO (nombre, precio, descripcion, fecha)
    VALUES(@producto, @precio,@descripcion,GETDATE());
GO

La ejecución:

USE prueba;
GO

EXEC InsertaProductoSP 'Hielos', 12.90, 'Bolsa de hielos de 3 kilos';
GO

SELECT TOP 3 * FROM dbo.DEMO_PRODUCTO ORDER BY id DESC;
GO

Resultado:

image

Espero les sea de ayuda, para algunos usuarios el ejemplo les puede parecer sumamente sencillo (y lo es), pero también creo que a los usuarios que inician los ubicara un poco más de como desarrollar en Transact SQL 2008, espero sus comentarios.

About these ads
    • alexpro
    • 30/05/09

    excelente ,esta vacanisimo este minitutorial,ojala
    nos regalaras unpoco de conocimiento en la administracion en sql.
    grcias …tienes un 10!

    • alvaro
    • 10/07/09

    hola broo q buen material muchas graciasss!!!

    • hozcarinho
    • 30/12/09

    Bastante claro y explicito tu ejemplo la verdad, te da una idea muy clara de como trabaja un SP gracias por tu aporte

    • GAROTINHO20
    • 18/08/10

    hola man muy bueno el ejemplo

    NO SE SI TE PUEDES PONER
    EJEMPLO MAS COMPLICADOS

    COMO PARA UPDATE PERO
    CON SUB SENTENCIAS
    LO K PASA ES K
    SOY NUEVO CON

    sql server

    • GAROTINHO20F
    • 18/08/10

    PORFAS SI MAS EJEMPLILLOS

    • Hugo
    • 6/03/11

    Excelente ejercicio para aprendices como yo que nos estamos
    iniciando este campo de la programacion.
    muchas gracias

    • rosa
    • 3/08/11

    como hago ?
    obtener un listado de todos los clientes (nombre, ruc, etc) y la cantidad total de comprobantes emitidos para cada cliente durante el primer semestre del año 2009, ademas el monto total en soles pagado por cada cliente hasta el momento en forma descendente.
    -Obtener el resultado con procedimientos almacenados, si se concidera necesario emplear funciones
    ———————-esta es la bdVentas———————-
    USE Master
    GO
    –Creacion de la base de datos BDVentas
    IF EXISTS (SELECT Name FROM SysDatabases WHERE Name IN (‘BDVentas’))
    DROP DATABASE BDVentas
    GO
    CREATE DATABASE BDVentas
    GO
    /*—————————Creacion de Tablas—————————–*/
    USE BDVentas
    GO
    /*—————————–Tabla Cliente——————————–*/
    CREATE TABLE TCliente
    (
    IdCliente int identity(1,1),
    Nombre varchar(60),
    Ruc varchar(11),
    Direccion varchar(50),
    Telefono varchar(15),
    Email varchar(60),
    PRIMARY KEY (IdCliente)
    ——————————————————–
    ayuda
    xfavor

    )
    GO
    /*—————————–Tabla Producto——————————-*/
    CREATE TABLE TProducto
    (
    IdProducto int identity(1,1),
    Producto varchar(50),
    Unidad varchar(15),
    PrecioU decimal(9,2),
    Stock smallint,
    Marca varchar(40),
    PRIMARY KEY (IdProducto)
    )
    GO
    /*—————————Tabla Comprobante——————————*/
    CREATE TABLE TComprobante
    (
    IdComprobante int identity(1,1),
    Tipo varchar(10),
    Numero varchar(10),
    FechaEmision datetime,
    FechaVencimiento datetime,
    Anulado bit,
    IdCliente int,
    PRIMARY KEY (IdComprobante),
    FOREIGN KEY (IdCliente) REFERENCES TCliente
    )
    GO
    /*—————————–Tabla Detalle——————————–*/
    CREATE TABLE TDetalle
    (
    IdDetalle int identity(1,1),
    Cantidad smallint,
    IdProducto int,
    IdComprobante int,
    PRIMARY KEY (IdDetalle),
    FOREIGN KEY (IdProducto) REFERENCES TProducto,
    FOREIGN KEY (IdComprobante) REFERENCES TComprobante
    )
    GO

    • Joefay
    • 15/09/11

    Muy bien, Gracias por el ejemplo me sirvió mucho.

    • angelica
    • 31/01/12

    hola:
    que instrucción o sentencia se puede aplicar para que en un campo de 10 caracteres, solo muestre los que tienen 10 caracteres y que sean numéricos.agradecere su aporte

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: