top of page

Funciones SQL SERVER

Ejemplo de una función escalar de SQL SERVER donde se obtiene un valor único extraído de una tabla

El código es el siguiente.


         

ALTER FUNCTION [dbo].[GET_BTS_ACTIVA] (@BTS varchar(12))  
RETURNS integer
AS  
BEGIN 

DECLARE @Activa integer 
DECLARE @ReturnValue varchar(255)

SET @Activa= 0
SET @ReturnValue = 0

DECLARE My_Cursor CURSOR FOR
SELECT     Celulas.Activa
FROM         Celulas
WHERE     celulas.bts = @BTS and celulas.activa=1


OPEN My_Cursor

FETCH NEXT FROM My_Cursor
INTO  @Activa

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @ReturnValue =  @Activa
    FETCH NEXT FROM My_Cursor
    INTO @Activa
END


CLOSE My_Cursor
DEALLOCATE My_Cursor

Return (@ReturnValue)
END

OTRA FUNCIÓN USANDO IF ELSE

ALTER FUNCTION [dbo].[REGRESA_BANDA] (@FRECUENCIA varchar(50))  
RETURNS varchar(30)

AS  
BEGIN 
    DECLARE @RESULTADO varchar(30)
    
    SET @RESULTADO='----' -------ES EL DEFAULT 
    
    IF UPPER(RIGHT(@FRECUENCIA,3)) = '850'    
        SET @RESULTADO = '850 MHz'    
    
    IF UPPER(RIGHT(@FRECUENCIA,4)) = '1900'    
        SET @RESULTADO = '1900 MHz'    
    
    IF UPPER(RIGHT(@FRECUENCIA,4)) = '2100'    
        SET @RESULTADO = '2100 MHz'    
    

RETURN (@RESULTADO)
END

UN SIMPLE SELECT PARA NO USAR FUNCIONES

SELECT TOP (1000) [CELL]
      ,[CGI]
      , CASE WHEN RIGHT(CELL,1)='A' THEN 1
                WHEN RIGHT(CELL,1)='B' THEN 2
                WHEN RIGHT(CELL,1)='C' THEN 3

      END AS 'FINAL'

  FROM [dbo].[IMPRESOS]
  WHERE  RIGHT(CELL,1) IN ('A','B','C')

Una simple funcion escalar

ALTER function [dbo].[Regresa_usuario] 
(
    @idUsuario int                            --Parametro de entrada
)
returns nvarchar(80)
as
begin
    declare @elUsuario varchar(80)
    
    select @elUsuario = Usuario
    from Usuarios with(nolock)
    where idUsuario=@idUsuario

    return @elUsuario
    
end

bottom of page