[firebase-br] Stored Procedure ou UDF que retorne ANO E MES

Hugo dos Santos Saraiva projcad2 em ig.com.br
Sáb Jan 29 12:48:18 -03 2005


Essa procedure faz o que você precisa e mais um pouco, mas, talvez, o melhor 
seja mesmo uma udf.
É mais fácil fazer selects com funções de udfs aplicadas a campos do que 
utilizando subselects de SPs.

PDATA: Data a ser formatada;
P1: Primeiro valor ('d','m', 'a' [Outros valores são ignorados])
P2: Segundo valor ('d','m', 'a' [Outros valores são ignorados])
P3: Terceio valor ('d','m', 'a' [Outros valores são ignorados])
PSEP: Separador ('/', '-' ou qualquer outra string com até cinco caracteres)

*****************************************
SET TERM ^ ;

ALTER PROCEDURE FORMATDATA (
    PDATA DATE,
    P1 VARCHAR(1),
    P2 VARCHAR(1),
    P3 VARCHAR(1),
    PSEP VARCHAR(5))
RETURNS (
    DATA VARCHAR(20))
AS
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE VTIPO VARCHAR(1);
DECLARE VARIABLE AUX VARCHAR(20);
begin
   i = 0;
   if (p1 is null) then
      p1 = '';
   if (p2 is null) then
      p2 = '';
   if (p3 is null) then
      p3 = '';
   if (pSep is null) then
      pSep = '';
   while (i < 3) do
   begin
      Aux = '';
      i = i + 1;
      if (i = 1) then
        vTipo = Upper(p1);
      else
         if (i = 2) then
            vTipo = Upper(p2);
         else
            if (i = 3) then
               vTipo = Upper(p3);
      if (vTipo = 'D') then
         if (extract(day from pData) > 9) then
            Aux = cast(extract(day from pData) as varchar(2));
         else
            Aux = '0' || extract(day from pData);
      else
         if (vTipo = 'M') then
            if (extract(month from pData) > 9) then
               Aux = cast(extract(month from pData) as varchar(2));
            else
               Aux = '0' || extract(month from pData);
         else
            if (vTipo = 'A') then
               Aux = cast(extract(year from pData) as varchar(4));
      if (i = 1) then
         Data = Aux;
      else
         if (Aux <> '') then
            Data = Data || pSep || Aux;
   end
   Suspend;
end

^

SET TERM ; ^
**************************************


----- Original Message ----- 
From: "João Cezar da Fonseca Júnior" <joao.cezar em cultura.com.br>
To: "Firebase Grupo" <lista em firebase.com.br>
Sent: Saturday, January 29, 2005 12:07 PM
Subject: [firebase-br] Stored Procedure ou UDF que retorne ANO E MES


> Olá
>
> Andei pesquisando nas mensagens do grupo e não
> encontrei. Preciso de uma udf ou procedure que retorne
> o ano com 4 digitos e mes com 2 digitos.
>
> exemplo:
> cANOMES = "200501"
>
> Preciso de uma função que converta int para char.
>
> []´s
>
> João Cezar
> joao.cezar em cultura.com.br
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 





Mais detalhes sobre a lista de discussão lista