Ver Mensaje Individual
  #1  
Antiguo 07-01-2013
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Reputación: 18
GustavoCruz Va por buen camino
Devolver valores en SP

Buenas tardes amigos del foro,

tengo un procedimiento almacenado en firebird que me calcula la edad completa de una persona. el caso es que para ver los datos simplemente ejecuto esta instrucción:

Código SQL [-]
select * from edadcompleta('12/10/1980')

eso me devuelve 32 años, 0 meses, 25 dias.

he creado un procedimiento en SQL Server 2008
Código SQL [-]
USE [IPSSALUDSOCIAL]
GO
/****** Object:  StoredProcedure [dbo].[spEdadCompleta]    Script Date: 01/07/2013 15:57:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spEdadCompleta]
 @Fecha datetime  ,
 @Resultado varchar(250) output
 AS
 
 declare @a integer;
 declare @aa integer;
 declare @m integer;
 declare @mm integer;
 declare @d integer;
 declare @dd integer;
 declare @anio integer;
 declare @mes integer;
 declare @dia integer;
 
  
  SELECT @a = DATEPART(YEAR, @Fecha ),
  @m = DATEPART(MONTH, @Fecha),
  @d = DATEPART(day, @Fecha),
  @aa = DATEPART(year, CURRENT_TIMESTAMP),
  @mm = DATEPART(month, CURRENT_TIMESTAMP),
  @dd = DATEPART(day, CURRENT_TIMESTAMP),
  @anio = @aa - @a; 
 
  if (@m <= @mm) 
    BEGIN
      select @mes = @mm - @m;
    END
  else
    begin
      select @mes = @mm + 12 - @m;
      select @anio = @anio - 1;
    end
  if (@d <= @dd) 
    select @dia = @dd - @d;
  else
    begin
      if (@aa % 4 = 0)
        select @dia = @dd + 29 - @d;
      else
        select @dia = @dd + 28 - @d;
      select @mes = @mes - 1;
    end
  if (@mes < 0) 
    begin
      select @anio = @anio - 1;
      select @mes = @mes + 12;
    end
  if (@anio = 1) 
    select @Resultado = cast(@anio as varchar(4))+' Año, ';
  else
    select @Resultado = cast(@anio as varchar(4))+' Años, ';
    
  if (@mes = 1) 
    select @resultado = @resultado+cast(@mes as varchar(2))+' Mes, ';
  else
    select @Resultado = @Resultado+cast(@mes as varchar(2))+' Meses, ';
  if (@dia = 1) 
    select @Resultado = @Resultado+cast(@dia as varchar(2))+' Día ';
  else
    select @Resultado = @Resultado+cast(@dia as varchar(2))+' Días ';
GO

mi pregunta es: cómo recupero la edad. Al estilo de firebird.

Gracias de Antemano por vuetra ayuda.


Gustavo Cruz
Responder Con Cita