[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