111 - Lenguaje de control de flujo (if) |
Trabajamos con la tabla "libro" de una librería.
Eliminamos la tabla si existe:
if object_id('libros') is not null drop table libros;
Creamos la tabla:
create table libros( codigo int identity, titulo varchar(40) not null, autor varchar(30), editorial varchar(20), precio decimal(5,2), cantidad tinyint, primary key (codigo) );
Ingresamos los siguientes registros:
insert into libros values('Uno','Richard Bach','Planeta',15,100); insert into libros values('El aleph','Borges','Emece',20,150); insert into libros values('Aprenda PHP','Mario Molina','Nuevo siglo',50,200); insert into libros values('Alicia en el pais de las maravillas','Lewis Carroll','Emece',15,0); insert into libros values('Java en 10 minutos','Mario Molina','Emece',40,200);
Mostramos los títulos de los cuales no hay libros disponibles (cantidad=0); en caso que no haya, mostramos un mensaje:
if exists (select *from libros where cantidad=0) (select titulo from libros where cantidad=0) else select 'No hay libros sin stock';
Hacemos un descuento del 10% a todos los libros de editorial "Emece"; si no hay, mostramos un mensaje:
if exists (select *from libros where editorial='Emece') begin update libros set precio=precio-(precio*0.1) where editorial='Emece' select 'libros actualizados' end else select 'no hay registros actualizados';
Veamos si se actualizaron:
select *from libros where editorial='Emece';
Eliminamos los libros de los cuales no hay stock (cantidad=0); si no hay, mostramos un mensaje:
if exists (select *from libros where cantidad=0) delete from libros where cantidad=0 else select 'No hay registros eliminados';
Se eliminó un registro, se ejecutó la sentencia del "if" porque había registros que cumplían la condición.
Ejecutamos nuevamente la sentencia anterior:
if exists (select *from libros where cantidad=0) delete from libros where cantidad=0 else select 'No hay registros eliminados';
Ahora se ejecutó la sentencia del "else" porque no había registros que cumplieran la condición.