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;