[firebase-br] Extrair apenas numero de um string [RESOLVIDO]

Wellington Melo wellmsilva em gmail.com
Qui Jul 22 16:27:01 -03 2010


Boa tarde a todos,
   Encontrei a solução para a pergunta acima;
Alterei a procedure e ficou  assim agora:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE PROC_DIGITOS (
    TEXTO VARCHAR(100))
RETURNS (
    RETORNO VARCHAR(100))
AS
DECLARE VARIABLE CH CHAR(1);
BEGIN
  Retorno = '';
  WHILE (Texto IS NOT NULL AND Texto <> '') DO
  BEGIN
    Ch = SUBSTRING(Texto FROM 1 FOR 1);
    IF (Ch >= '0' AND Ch <= '9') THEN
      Retorno = Retorno || Ch;
    Texto = SUBSTRING(Texto FROM 2 FOR 100);
  END
  SUSPEND;
END^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE PROC_DIGITOS TO SYSDBA;

Em 21 de julho de 2010 18:52, Kelver Merlotti <kmerlotti em gmail.com>escreveu:

> O 1.5 não possui nativamente algumas das funções utilizadas, que surgiram
> apenas a partir do 2.1
> Porém, se não me engano, todas as funções estão disponíveis na UDF que
> acompanha a instalação, faltando somente declara-las no BD.
> Dê uma pesquisada sobre isso.
> Abraços!
>
> Kelver Merlotti
> Coordenador Editorial do Portal www.ActiveDelphi.com.br
> Contato: kelver em activedelphi.com.br
> Google: kmerlotti em gmail.com
> Twitter: http://twitter.com/kmerlotti
> Tem um segundo? Então, dá uma olhadinha nisso:
> Um site de publicidades, de Portugal, está pagando em euros (quase 3x
> mais que em reais) pra quem estiver disposto a:
>  * Ler anúncios
>  * Visitar sites
>  * Clicar em banners
>  * Navegar na NET
>  * Ler e-mails
>  * Convidar novos usuários
> O pagamento pode ser feito de várias formas!
> Registra lá. Não custa nada!!! ;-)
> http://www.publipt.com/pages/index.php?refid=kmerlotti
>
>
> On Wed, Jul 21, 2010 at 17:50, Wellington Melo <wellmsilva em gmail.com>
> wrote:
>
> > Boa tarde a todos,
> >   Gostaria de saber se alguem sabe como criar a procedure abaixo no
> > firebird 1.5 :
> >
> > SET TERM ^;
> > CREATE OR ALTER PROCEDURE EXTRAI_INTEIRO(
> >  pTEXTO VARCHAR(100)
> > )RETURNS(
> >  RESULTADO VARCHAR(100)
> > )AS
> > DECLARE VARIABLE INDICE INTEGER;
> > DECLARE VARIABLE CARACTER CHAR(1);
> > begin
> >  IF (pTEXTO IS NULL) THEN
> >    RESULTADO = '';
> >  ELSE
> >  BEGIN
> >    RESULTADO = '';
> >    INDICE = 1;
> >    WHILE (INDICE <= CHAR_LENGTH(pTEXTO)) DO
> >    BEGIN
> >      CARACTER = CAST(SUBSTRING(pTEXTO FROM INDICE FOR 1) AS CHAR(1));
> >      IF (CARACTER BETWEEN '0' AND '9') THEN
> >        RESULTADO = RESULTADO||CARACTER;
> >      INDICE = INDICE + 1;
> >    END
> >  END
> >  suspend;
> > end^
> >
> > Ela foi criada no Firebird 2.5 e funcionou perfeitamente mas quando vou
> > criar no 1.5 não.
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista