Store procedure en SQLServer

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

Creamos la tabla libro

[cc lang=’sql’ ]
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)
);

[/cc]

Sp que busca libros segun autor

[cc lang=’sql’ ]

create procedure pa_libros_autor
@autor varchar(30)=null
with encryption
as
select *from libros
where autor=@autor;

[/cc]

Revisamo las correcta existecia del sp

[cc lang=’sql’ ]

sp_help pa_libros_autor;

[/cc]

Poblamos la tabla

[cc lang=’sql’ ]
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);

[/cc]

Probamo el sp con parametros

[cc lang=’sql’ ]
exec pa_libros_autor ‘Richard Bach’;

[/cc]

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

[cc lang=’sql’ ]

exec sp_helptext pa_libros_autor;

[/cc]

modificamos el sp para que bisque con un like

[cc lang=’sql’ ]
alter procedure pa_libros_autor
@autor varchar(30)=null
as
select titulo, editorial, precio
from libros
where autor like @autor;

[/cc]

Ejecutamos el nuevo sp

[cc lang=’sql’ ]
exec pa_libros_autor ‘Borges’;

[/cc]

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

[cc lang=’sql’ ]

alter procedure pa_libros_autor
@autor varchar(30)=’%’
as
select titulo, editorial, precio, autor
from libros
where autor like @autor;

[/cc]

probamos el sp sin parametros

[cc lang=’sql’ ]
exec pa_libros_autor ;

[/cc]

Creamos tabla ofertas

[cc lang=’sql’ ]
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)
);

[/cc]

poblamos tabla ofertas

[cc lang=’sql’ ]

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);

[/cc]

seleccionamos libros con precio menor o igual a 30 pesos

[cc lang=’sql’ ]
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;

[/cc]

insertamos en la tabla oferta lo entregago por pa_ofertas

[cc lang=’sql’ ]

insert into ofertas exec pa_ofertas;

[/cc]

Creamos la tabla pa_editorial

[cc lang=’sql’ ]
if object_id(‘libros_por_editorial’) is not null
drop table libros_por_editorial;

create table libros_por_editorial(
editorial varchar(20),
cantidad int
);

[/cc]

Creamos el procedimiento pa_libros_por_editorial

[cc lang=’sql’ ]
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;

[/cc]

Poblamos la tabla libros_por_editorial con lo entregado por el sp pa_libros_por_editorial

[cc lang=’sql’ ]
insert into libros_por_editorial exec pa_libros_por_editorial;

[/cc]

Validamos

[cc lang=’sql’ ]
select *from libros_por_editorial;

[/cc]

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 *