Listado completo de tutoriales
127 - Procedimientos almacenados (modificar) |
Los procedimientos almacenados pueden modificarse, por necesidad de los usuarios o por cambios en la estructura de las tablas que referencia.
Un procedimiento almacenado existente puede modificarse con "alter procedure". Sintaxis:
alter procedure NOMBREPROCEDIMIENTO @PARAMETRO TIPO = VALORPREDETERMINADO as SENTENCIAS;
Modificamos el procedimiento almacenado "pa_libros_autor" para que muestre, además del título, la editorial y precio:
alter procedure pa_libros_autor @autor varchar(30)=null as if @autor is null begin select 'Debe indicar un autor' return end else select titulo,editorial,precio from libros where autor = @autor;
Si quiere modificar un procedimiento que se creó con la opción "with encryption" y quiere conservarla, debe incluirla al alterarlo.
Ingresemos el siguiente lote de comandos en el SQL Server Management Studio:
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) ); go 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); if object_id('pa_libros_autor') is not null drop procedure pa_libros_autor; go -- 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 (No se puede porque está encriptado): exec sp_helptext pa_libros_autor; go -- 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; go -- Ejecutamos el procedimiento: exec pa_libros_autor 'Borges'; -- Veamos el contenido del procedimiento (es posible porque ya no está encriptado): exec sp_helptext pa_libros_autor; go -- 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; go -- Ejecutamos el procedimiento: exec pa_libros_autor;