viernes, 4 de noviembre de 2011

FUNCIONES

--INVERTIR PALABRA
create function invertir(@palabra varchar(50))returns varchar(50)
as begin
declare @tamaño int
declare @posicion int
declare @cadena varchar(50)
set @tamaño = len(@palabra)
set @posicion = 0
set @cadena= ''
while @tamaño >= @posicion begin
set @cadena=substring(@palabra,@posicion,1)+ @cadena
set @posicion=@posicion+1
end
return @cadena
end
go
print dbo.invertir('DAMIAN')
go
--MÁXIMO COMÚN DIVISOR
create function mcd(@num1 as int,@num2 as int)returns int
as begin
declare @cont int,@mcm int
set @mcm=1
set @cont=2
while(@num1>=@cont or @num2>=@cont)begin
if(@num1%@cont=0 and @num2%@cont=0)begin
set @num1=@num1/@cont
set @num2=@num2/@cont
set @mcm=@mcm*@cont
end
else begin
set @cont=@cont+1
end
end
if(@mcm=1)begin
set @mcm=0
end
return @mcm
end
go
print dbo.mcd (4,6)
go
--MÍNIMO COMÚN MÚLTIPLO
create function mcm(@n1 int,@n2 int)returns int
as begin
declare @cont int,@mcm int
set @cont = 2
set @mcm = 1
while @n1>=@cont or @n2>=@cont begin
if @n1 % @cont = 0 begin
if @n2 % @cont = 0 begin
set @mcm = @mcm * @cont
set @n1 = @n1 / @cont
set @n2 = @n2 / @cont
end
else begin
set @mcm = @mcm * @cont
set @n1 = @n1 / @cont
end
end
else begin
if @n2 % @cont = 0 begin
set @mcm = @mcm * @cont
set @n2 = @n2 / @cont
end
else begin
set @cont = @cont + 1
end
end
end
return @mcm
end
go
print dbo.mcm(8,32)
go
--BINARIO
create function binario(@enteroP int)returns varchar(50)
as
begin
declare @cadena varchar(50)
set @cadena= ''
while @enteroP >= 2 begin
set @cadena = convert(varchar, @enteroP % 2) + @cadena
set @enteroP = @enteroP/2
end
set @cadena = convert(varchar, @enteroP ) + @caden
areturn @cadena
end
go
print dbo.binario(80)
go
--GENERO
create function genero(@sexo as char(1))returns varchar(10)
as
begin
declare @genero varchar(10)
set @genero=
case @sexo
when 'M' then 'MASCULINO'
when 'F' then 'FEMENINO'
end
return @genero
end
go
print dbo.genero('M')