127 - Procedimientos almacenados (modificar) |
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla si existe y la creamos nuevamente:
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)
);
Ingresamos algunos registros:
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);
Eliminamos el procedimiento llamado "pa_libros_autor", si existe:
if object_id('pa_libros_autor') is not null
drop procedure pa_libros_autor;
Creamos el procedimiento almacenado "pa_libros_autor" con la opción de encriptado para que muestre todos los títulos de los libros cuyo autor se envía como argumento:
create procedure pa_libros_autor
@autor varchar(30)=null
with encryption
as
select titulo from libros
where autor like @autor;
Ejecutamos el procedimiento:
exec pa_libros_autor 'Richard Bach';
Intentamos ver el contenido del procedimiento:
exec sp_helptext pa_libros_autor;
No se puede porque está encriptado.
Modificamos el procedimiento almacenado "pa_libros_autor" para que muestre, además del título, la editorial y precio, quitándole la encriptación:
alter procedure pa_libros_autor
@autor varchar(30)=null
as
select titulo, editorial, precio from libros
where autor like @autor;
Ejecutamos el procedimiento:
exec pa_libros_autor 'Borges';
Veamos el contenido del procedimiento:
exec sp_helptext pa_libros_autor;
es posible porque ya no está encriptado.
Modificamos el procedimiento almacenado "pa_libros_autor" para que, en caso de no enviarle un valor, muestre todos los registros:
alter procedure pa_libros_autor
@autor varchar(30)='%'
as
select titulo, editorial, precio from libros
where autor like @autor;
Ejecutamos el procedimiento:
exec pa_libros_autor;