--****************************
--FUNCIONES*******************
--****************************
--1.- MOSTRAR EL NOMBRE Y EDAD EXACTA DE LOS MESEROS QUE ATENDIERON A MAS PERSONAS EN LA SALA X
ALTER FUNCTION FUNC1(@XSALA INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @MESERO VARCHAR (255),@ID_M INTEGER
IF EXISTS(SELECT * FROM SALAS WHERE ID_SALA=@XSALA) BEGIN
SET @ID_M = (SELECT TOP 1 P.ID_MESERO
FROM PEDIDOS P, MESAS M, SALAS S
WHERE P.ID_MESA=M.ID_MESA AND M.ID_SALA=S.ID_SALA
AND S.ID_SALA=@XSALA
GROUP BY P.ID_MESERO
ORDER BY COUNT(P.ID_COMANDA) DESC)
SET @MESERO =(SELECT NOMBRE FROM MESEROS
WHERE ID_MESERO=@ID_M)
END
ELSE
BEGIN
SET @MESERO='NO EXISTE SALA!'
END
RETURN @MESERO
END
PRINT CAST(DBO.FUNC1(2) AS VARCHAR)
--2.- DETERMINAR EL TIEMPO EXACTO DEL CONTRATO MAS ANTIGUO
ALTER FUNCTION FUNC2 ()
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @RESP VARCHAR(25), @FECH DATETIME
SET @FECH= (SELECT MIN(FECHA_PAGO) FROM CONTRATOS)
SET @RESP = DBO.CAL_EDADD(@FECH)
RETURN @RESP
END
PRINT DBO.FUNC2()
CREATE FUNCTION CAL_EDADD(@FECHA_NAC DATETIME)
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @AUX_FECHA DATETIME
DECLARE @DIA INTEGER, @MES INTEGER, @ANIO INTEGER
DECLARE @EDAD VARCHAR(25)
SET @AUX_FECHA = @FECHA_NAC
SET @ANIO = DATEDIFF(yy, @AUX_FECHA, GETDATE()) - CASE WHEN MONTH(@FECHA_NAC) > MONTH(GETDATE()) THEN 1 ELSE 0 END
SET @AUX_FECHA = DATEADD(yy, @ANIO, @AUX_FECHA)
SET @MES = DATEDIFF(m, @AUX_FECHA, GETDATE()) - CASE WHEN DAY(@FECHA_NAC) > DAY(GETDATE()) THEN 1 ELSE 0 END
SET @AUX_FECHA = DATEADD(m, @MES, @AUX_FECHA)
SET @DIA = DATEDIFF(d, @AUX_FECHA, GETDATE())
SET @EDAD='AÑOS:'+ CAST(@ANIO AS VARCHAR)+' MESES:'+ CAST(@MES AS VARCHAR)+ ' DIAS:'+ CAST(@DIA AS VARCHAR)
RETURN (@EDAD)
END
lunes, 26 de septiembre de 2011
[INF-272] PROYECTO : Funciones
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario