136 - Funciones de tabla de varias instrucciones


Primer problema:
Una empresa almacena los datos de sus empleados en una tabla denominada "empleados".
1- Elimine la tabvla si existe:
 if object_id('empleados') is not null
  drop table empleados;

2- Cree la tabla con la siguiente estructura:
 create table empleados(
  documento char(8) not null,
  apellido varchar(30) not null,
  nombre varchar(30) not null,
  domicilio varchar(30),
  ciudad varchar(30),
  fechanacimiento datetime,
  constraint PK_empleados
   primary key(documento)
 );

3- Ingrese algunos registros:
 insert into empleados values('22222222','Acosta','Ana','Avellaneda 123','Cordoba','1970/10/10');
 insert into empleados values('23333333','Bustos','Bernardo','Bulnes 234','Cordoba','1972/05/15');
 insert into empleados values('24444444','Caseros','Carlos','Colon 356','Carlos Paz','1980/02/25');
 insert into empleados values('25555555','Fuentes','Fabiola','Fragueiro 987','Jesus Maria','1984/06/12');

4- Elimine la función "f_empleados" si existe:
 if object_id('f_empleados') is not null
  drop function f_empleados;

5- Cree una función que reciba como parámetro el texto "total" o "parcial" y muestre, en el primer 
caso, todos los datos de los empleados y en el segundo caso (si recibe el valor "parcial"): el 
documento, apellido, ciudad y año de nacimiento.

6- Llame a la función creada anteriormente enviándole "total".

7- Llame a la función anteriormente creada sin enviar argumento.
Mensaje de error.

8- Llame a la función enviándole una cadena vacía.

9- Ejecute la función "f_empleados" enviando "parcial" como argumento y recupere solamente los 
registros cuyo domicilio es "Cordoba".
Ver solución

 if object_id('empleados') is not null
  drop table empleados;

 create table empleados(
  documento char(8) not null,
  apellido varchar(30) not null,
  nombre varchar(30) not null,
  domicilio varchar(30),
  ciudad varchar(30),
  fechanacimiento datetime,
  constraint PK_empleados
   primary key(documento)
 );

 insert into empleados values('22222222','Acosta','Ana','Avellaneda 123','Cordoba','1970/10/10');
 insert into empleados values('23333333','Bustos','Bernardo','Bulnes 234','Cordoba','1972/05/15');
 insert into empleados values('24444444','Caseros','Carlos','Colon 356','Carlos Paz','1980/02/25');
 insert into empleados values('25555555','Fuentes','Fabiola','Fragueiro 987','Jesus Maria','1984/06/12');

 if object_id('f_empleados') is not null
  drop function f_empleados;

 create function f_empleados
 (@opcion varchar(10)
 )
 returns @listado table
 (documento char(8),
 nombre varchar(60),
 domicilio varchar(60),
 nacimiento varchar(12))
 as 
 begin
  if @opcion not in ('total','parcial')
    set @opcion='parcial'
  if @opcion='total'
   insert @listado 
    select documento,
    (apellido+' '+nombre),
    (domicilio+' ('+ciudad+')'), 
    cast(fechanacimiento as varchar(12))
     from empleados
  else
   insert @listado
   select documento,apellido,ciudad,cast(datepart(year,fechanacimiento) as char(4))
   from empleados
  return
end;

 select *from dbo.f_empleados('total');

 select *from dbo.f_empleados();

 select *from dbo.f_empleados('');

 select *from dbo.f_empleados('parcial')
  where domicilio='Cordoba';



 

Retornar