You are on page 1of 4

EJERCICIO FUNCIONES DE USUARIO Funcin que devuelve la direccin de un centro de trabajo pasndole el nmero de centro.

create function dbo.direccioncentro(@numerocentro int) returns varchar(40) as begin declare @direccion varchar(40) select @direccion=seas from dbo.TCENTR where NUMCE=@numerocentro return @direccion return @direccion end

Funcin que devuelve el nombre de un centro de trabajo pasndole el nmero de centro.


create function dbo.nombrecentro(@numerocentro int) returns varchar(40) as begin declare @nombre varchar(40) select @nombre=nomce from dbo.TCENTR where NUMCE=@numerocentro return @nombre end

Dado un nmero de empleado, funcin que devuelva el nombre


create function dbo.nombreempleado(@numeroemple int) returns varchar(20) as begin declare @nombre varchar(40) select @nombre=nomem from dbo.Temple where NUMemp=@numeroemple return @nombre end

Dado un nmero de empleado, funcin que devuelva el apellido


create function dbo.apellidoempleado(@numeroemple int) returns varchar(20) as begin declare @apellido varchar(20) select @apellido=SUBSTRING(nomem, CHARINDEX(' ', nomem) + 1, LEN(nomem)) from dbo.Temple where NUMemp=@numeroemple return @apellido end

Hallar la funcin que me devuelve la edad de un empleado, cuando se conoce el nmero de empleado
create function dbo.edadempleado(@numeroemple int) returns int as begin declare @edad int select @edad=year(getdate())-year(fecna) from dbo.Temple where NUMemp=@numeroemple return @edad end

Crear una tabla con 3 campos (nombre, dni, letra) llamada TempleDNI. El campo letra estar vaco. Funcin que actualizar la tabla, devolviendo la letra del dni
create function dbo.letradni(@dni varchar(8)) returns varchar(1) as begin declare @letra varchar(1) SET @letra = SUBSTRING('TRWAGMYFPDXBNJZSQVHLCKE', @dni % 23 + 1, 1) return @letra end update templedni set letra=dbo.letradni(templedni.dni)

En la tabla anterior, funcin que dado un nmero de empleado y su dni, devuelva la Letra calculada.
create function dbo.letradni2(@dni varchar(8),@nuemp int) returns varchar(1) as begin declare @letra varchar(1) SET @letra = SUBSTRING('TRWAGMYFPDXBNJZSQVHLCKE', @dni % 23 + 1, 1) return @letra end

Funcin que dado un dni, devuelva la letra correspondiente


create function dbo.letradni(@dni varchar(8)) returns varchar(1) as begin declare @letra varchar(1) SET @letra = SUBSTRING('TRWAGMYFPDXBNJZSQVHLCKE', @dni % 23 + 1, 1) return @letra end

Funcin que dado un dni, actualice en el registro correspondiente la letra (suponemos que est vaca)
create function dbo.actualizarletradni(@dni varchar(8)) returns varchar(1) as begin declare @letra varchar(1) SET @letra = SUBSTRING('TRWAGMYFPDXBNJZSQVHLCKE', @dni % 23 + 1, 1) return @letra end update templedni set letra=dbo.actualizarletradni('13246578') where templedni.dni='13246578'

Funcin que dado un dni con la letra en una cadena (todo unido), devuelva si es correcto o no
create function dbo.dnicorrecto(@dni varchar(9)) returns varchar(1) as begin declare @letra varchar(1) declare @numeros varchar(8) SET @numeros = SUBSTRING(@dni,1,8) SET @letra = SUBSTRING('TRWAGMYFPDXBNJZSQVHLCKE', @numeros % 23 + 1, if (@letra=SUBSTRING(@dni,9,1)) set @letra='s' else set @letra='n' return @letra end print dbo.dnicorrecto('12345678Z')

Dado un cdigo de banco, cdigo de sucursal y nmero de cuenta corriente, devuelva el dgito de control
11 create function dbo.digicontrol(@banco varchar(4),@sucur varchar(4),@cuenta varchar(10)) returns varchar(2) as begin declare @resultado int declare @d1 varchar(2) set set set set @resultado=@resultado+convert(int,SUBSTRING(@banco,1,1))*4 @resultado=@resultado+convert(int,SUBSTRING(@banco,2,1))*8 @resultado=@resultado+convert(int,SUBSTRING(@banco,3,1))*5 @resultado=@resultado+convert(int,SUBSTRING(@banco,4,1))*10

set @resultado=@resultado+convert(int,SUBSTRING(@sucur,1,1))*9 set @resultado=@resultado+convert(int,SUBSTRING(@sucur,2,1))*7 set @resultado=@resultado+convert(int,SUBSTRING(@sucur,3,1))*3

set @resultado=@resultado+convert(int,SUBSTRING(@sucur,4,1))*6 set @resultado=@resultado % 11 if @resultado=10 set @resultado=1 set @d1=CONVERT(varchar(1),@resultado) set @resultado=0 set @resultado=@resultado+convert(int,SUBSTRING(@cuenta,1,1))*1 set @resultado=@resultado+convert(int,SUBSTRING(@cuenta,2,1))*2 set @resultado=@resultado+convert(int,SUBSTRING(@cuenta,3,1))*4 set @resultado=@resultado+convert(int,SUBSTRING(@cuenta,4,1))*8 set set set set set set @resultado=@resultado+convert(int,SUBSTRING(@cuenta,1,1))*5 @resultado=@resultado+convert(int,SUBSTRING(@cuenta,2,1))*10 @resultado=@resultado+convert(int,SUBSTRING(@cuenta,3,1))*9 @resultado=@resultado+convert(int,SUBSTRING(@cuenta,4,1))*7 @resultado=@resultado+convert(int,SUBSTRING(@cuenta,4,1))*3 @resultado=@resultado+convert(int,SUBSTRING(@cuenta,4,1))*6

set @resultado=@resultado % 11 if @resultado=10 set @resultado=1 set @d1=@d1+CONVERT(varchar(1),@resultado) return @d1 end

You might also like