Store procedure en SQLServer

Este ejemplo fue sacado de una clase de SQLServer del duoc uc.

Creamos la tabla libro

IF object_id('libros') IS NOT NULL
DROP TABLE libros;
CREATE TABLE libros(
codigo INT IDENTITY,
titulo VARCHAR(40),
autor VARCHAR(30),
editorial VARCHAR(20),
precio DECIMAL(5,2),
PRIMARY KEY(codigo)
);

Sp que busca libros segun autor

CREATE PROCEDURE pa_libros_autor
@autor VARCHAR(30)=NULL
WITH encryption
AS
SELECT *FROM libros
WHERE autor=@autor;

Revisamo las correcta existecia del sp

sp_help pa_libros_autor;

Poblamos la tabla

INSERT INTO libros VALUES ('Uno','Richard Bach','Planeta',15);
INSERT INTO libros VALUES ('Ilusiones','Richard Bach','Planeta',12);
INSERT INTO libros VALUES ('El aleph','Borges','Emece',25);
INSERT INTO libros VALUES ('Aprenda PHP','Mario Molina','Nuevo siglo',50);
INSERT INTO libros VALUES ('Matematica estas ahi','Paenza','Nuevo siglo',18);
INSERT INTO libros VALUES ('Puente al infinito','Richard Bach','Sudamericana',14);
INSERT INTO libros VALUES ('Antología','J. L. Borges','Paidos',24);
INSERT INTO libros VALUES ('Java en 10 minutos','Mario Molina','Siglo XXI',45);
INSERT INTO libros VALUES ('Antología','Borges','Planeta',34);

Probamo el sp con parametros

EXEC pa_libros_autor 'Richard Bach';

Revisamos el contenido del sp, si esta con encriptacion no sale

EXEC sp_helptext pa_libros_autor;

modificamos el sp para que bisque con un like

ALTER PROCEDURE pa_libros_autor
@autor VARCHAR(30)=NULL
AS
SELECT titulo, editorial, precio
FROM libros
WHERE autor LIKE @autor;

Ejecutamos el nuevo sp

EXEC pa_libros_autor 'Borges';

Modificamos el sp para que busque todos los libros si es que este no reciba parametros

ALTER PROCEDURE pa_libros_autor
@autor VARCHAR(30)='%'
AS
SELECT titulo, editorial, precio, autor
FROM libros
WHERE autor LIKE @autor;

probamos el sp sin parametros

EXEC pa_libros_autor ;

Creamos tabla ofertas

IF object_id('ofertas') IS NOT NULL
DROP TABLE ofertas;

CREATE TABLE ofertas(
titulo VARCHAR(40),
autor VARCHAR(30),
editorial VARCHAR(20),
precio DECIMAL(5,2)
);

poblamos tabla ofertas

INSERT INTO libros VALUES ('Uno','Richard Bach','Planeta',15);
INSERT INTO libros VALUES ('Ilusiones','Richard Bach','Planeta',12);
INSERT INTO libros VALUES ('El aleph','Borges','Emece',25);
INSERT INTO libros VALUES ('Aprenda PHP','Mario Molina','Nuevo siglo',50);
INSERT INTO libros VALUES ('Matematica estas ahi','Paenza','Nuevo siglo',18);
INSERT INTO libros VALUES ('Puente al infinito','Richard Bach','Sudamericana',14);
INSERT INTO libros VALUES ('Antología','J. L. Borges','Paidos',24);
INSERT INTO libros VALUES ('Java en 10 minutos','Mario Molina','Siglo XXI',45);
INSERT INTO libros VALUES ('Antología','Borges','Planeta',34);

seleccionamos libros con precio menor o igual a 30 pesos

IF object_id('pa_ofertas') IS NOT NULL
DROP PROCEDURE pa_ofertas;
GO

CREATE proc pa_ofertas
AS
SELECT titulo,autor,editorial,precio
FROM libros
WHERE precio<=30;

insertamos en la tabla oferta lo entregago por pa_ofertas

INSERT INTO ofertas EXEC pa_ofertas;

Creamos la tabla pa_editorial

IF object_id('libros_por_editorial') IS NOT NULL
DROP TABLE libros_por_editorial;

CREATE TABLE libros_por_editorial(
editorial VARCHAR(20),
cantidad INT
);

Creamos el procedimiento pa_libros_por_editorial

IF object_id('pa_libros_por_editorial') IS NOT NULL
DROP PROCEDURE pa_libros_por_editorial;
GO
CREATE proc pa_libros_por_editorial
AS
SELECT editorial,COUNT(*)
FROM libros
GROUP BY editorial;

Poblamos la tabla libros_por_editorial con lo entregado por el sp pa_libros_por_editorial

INSERT INTO libros_por_editorial EXEC pa_libros_por_editorial;

Validamos

SELECT *FROM libros_por_editorial;
Este artículo fue escrito en Uncategorized. Enlace Permanente.

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *