Documentos de Académico
Documentos de Profesional
Documentos de Cultura
use Northwind
go
--FUNCIN QUE PERMITE INVERTIR UN NUMERO
if OBJECT_ID('dbo.fnNumInvertido','N') IS NOT NULL
drop function dbo.fnNumInvertido
go
create function dbo.fnNumInvertido(@n int , @inv int)
returns int
AS
Begin
DECLARE @contrario int
if @n=0
set @contrario=@inv
else
set @contrario=dbo.fnNumInvertido(@n/10, @n
%10+@inv*10)
return @contrario
End
-- PROCEDIMIENTO ALMACENADO PARA MOSTRAR LA LISTA
-- DE LOS 10 PRIMEROS NMEROS CAPICAS
create procedure dbo.Listar10PrimerosCapicuas
AS
BEGIN
DECLARE @num int, @cont int
set @num=10
SET @cont=0
while @cont<10
BEGIN
if dbo.fnNumInvertido(@num, 0) = @num
BEGIN
SELECT @num as 'Nmero Capicua'
set @cont=@cont+1
set @num=@num+1
END
else
set @num=@num+1
END
END
--CONSULTA T-SQL PARA EJECUTAR EL SP
-- QUE MUESTRA LOS 10 PRIMEROS NMERO CAPICUAS.
exec dbo.Listar10PrimerosCapicuas
-- EL RESULTADO DE EJECUTAR ESTE SP, ES EL SIGUIENTE
2. NMEROS AMIGOS
Dos nmeros son amigos cuando la suma de los divisores de uno de ellos es igual
al otro y viceversa. Implemente un proceso para determinar si dos nmeros
ingresados por teclado son amigos.
use Northwind
go
--Funcin que calcula la Suma de Divisores de un nmero.
if OBJECT_ID('dbo.fnSumaDivisores','N') is not null
drop function dbo.fnSumaDivisores
go
create function dbo.fnSumaDivisores(@n int, @div int, @SumaDivisor int)
returns int
AS
Begin
declare @Suma int
--FUNCIONifPARA
@div=0VERIFICAR SI 2 NUMEROS SON AMIGOS
set @Suma=@SumaDivisor
if OBJECT_ID('dbo.fnSonLos2NumerosAmigos','N') IS NOT NULL
else
DROP FUNCTION dbo.fnSonLos2NumerosAmigos
go begin
if @n%@div=0
CREATE FUNCTION dbo.fnSonLos2NumerosAmigos(@n1 int, @n2 int)
set @Suma=dbo.fnSumaDivisores(@n,@div-1, @SumaDivisor+@div)
returns CHAR(50)
else
AS set @Suma=dbo.fnSumaDivisores(@n,@div-1,@SumaDivisor)
BEGIN end
DECLARE
return @Suma@resultado char(50)
End if dbo.fnSumaDivisores(@n1,@n1/2,0) =
dbo.fnSumaDivisores(@n2,@n2/2,0)
set @resultado='Los Numeros Si son Amigos'
else
set @resultado='Los Numeros No son Amigos'
return @resultado
END
--CONSULTA T-SQL QUE EJECUTA LA FUNCION dbo.fnSonLos2NumerosAmigos(@n1 int, @n2
int)
-- QUE VERIFICA SI LOS NUMEROS SON AMIGOS
SELECT 20 AS [Num 1],40 as [Num 2],dbo.fnSonLos2NumerosAmigos(20, 40) as 'Ver si son
Amigos'
-- El resultado de esta sentencia ejecutada es el siguiente.
use Northwind
go
-- FUNCION QUE CUENTA CUANTOS DE LOS DIGITOS INTERMEDIOS SON
IMPARES
if OBJECT_ID('dbo.fnCuentaDigImpar','N') is not null
drop function dbo.fnCuentaDigImpar
go
create function dbo.fnCuentaDigImpar(@n int, @bandera int)
returns int
AS
BEGIN
if @bandera=0
--PROCEDIMIENTO ALAMACENADO
return 0 QUE MUESTRA LOS NUMEROS EN TRE
1000 1500 if (@n%10)%2 <>0
-- CUYOS DIGITOS INTERMEDIOS SON IMPARES
return 1+dbo.fnCuentaDigImpar(@n/10,@bandera-1)
create procedure
returnSP_IdentificaImpares
0+dbo.fnCuentaDigImpar(@n/10,@bandera-1)
As
begin end
go
declare @numero int
set @numero=1000
while(@numero<1501)
begin
if(dbo.fnCuentaDigImpar(@numero/10,2)=2)
begin
select @numero as 'Numero con las Cifras Medias Impares'
set @numero=@numero + 1
end
else
set @numero=@numero + 1
end
end
--CONSULTA T-SQL PARA EJECUTAR EL SP LOS NUMEROS EN TRE 1000 1500
-- CUYOS DIGITOS INTERMEDIOS SON IMPARES
exec SP_IdentificaImpares
-- EL RESULTADO DE EJECUTAR ESTE SP, ES EL SIGUIENTE