[firebase-br] função STUFF (SOLUÇÃO)

Mário Reis mariodosreyx em gmail.com
Sex Set 14 10:10:30 -03 2018


É só para partilhar uma ideia. Porque não usar uma função (a partir da
Ver.3.0 claro):
CREATE FUNCTION FUNC_STUFF(
  WP_TEXTO VARCHAR(1000),
  WP_START INTEGER,
  WP_DELETE INTEGER,
  WP_INSERT VARCHAR(100))
RETURNS VARCHAR(1000) CHARACTER SET WIN1252 COLLATE WIN1252
AS
DECLARE VARIABLE WW_P1 VARCHAR(1000);
DECLARE VARIABLE WW_P2 VARCHAR(1000);
DECLARE VARIABLE WW_STUFF VARCHAR(1000);
BEGIN


WW_Stuff = '';
     if (WP_Delete > 0) then
  begin
       WW_P1 = SUBSTRING(WP_texto FROM 1 FOR WP_Start-1);
       WW_P2 = SUBSTRING(WP_texto FROM (WP_Start + WP_Delete) FOR
CHAR_LENGTH(WP_texto));
     end
  else
   if (WP_Delete = 0) then
    begin
          WW_P1 = SUBSTRING(WP_texto FROM 1 FOR WP_Start-1);
          WW_P2 = SUBSTRING(WP_texto FROM WP_Start FOR
CHAR_LENGTH(WP_texto));
        end
   WW_Stuff = WW_P1 || WP_Insert || WW_P2;

    RETURN ( WW_Stuff ) ;

END;
Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.


Hélio Oliveira <hpensador em gmail.com> escreveu no dia quinta, 13/09/2018
à(s) 19:57:

> Claro!
>
> Aproveita e adiciona esses comentários na mesma.
>
>
>     /* Função criada para substituir a UDF_STUFF que não tem suporte ao
> FB 64 Bits                                           */
>     /* WW_Texto - texto que terá seu valor a adição de outro texto
> (WW_Insert) ou a remoção de alguns caracteres (WW_Delete) */
>     /* WW_Start - posição inicial onde (WW_Texto) terá a adição ou
> remoção de alguns caracteres.                             */
>     /* Função desenvolvida com base no que está descrito em:
> http://www.oohg.org/cl53/nga2123.html                           */
>
>
>
> Em 13/09/2018 09:47, Carlos H. Cantu escreveu:
> > Posso publicar no site?
> >
> > PS: O SUSPEND Não é necessário, visto que essa não é uma procedure
> > selecionável.
> >
> > []s
> > Carlos H. Cantu
> > eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> > www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
> >
> > HO> Bom dia Colegas!
> >
> > HO> Com base no que está descrito aqui
> > HO> http://www.oohg.org/cl53/nga2123.html
> > HO> criei a função abaixo. Nos testes feitos com os valores do exemplo do
> > HO> material encontrado no link acima, a mesma está funcionando 100% -
> deixo
> > HO> aqui como uma contribuição.
> >
> > HO> Fiz uma SP por estar usando o FB 2.5 neste projeto, se fosse no 3.0
> > HO> seria uma Function.
> >
> > HO> CREATE PROCEDURE STUFF (
> > HO>     WP_texto VARCHAR(1000),
> > HO>     WP_Start INTEGER,
> > HO>     WP_Delete INTEGER,
> > HO>     WP_Insert VARCHAR(100))
> > HO> RETURNS (
> > HO>     WW_Stuff VARCHAR(1000) )
> > HO> AS
> > HO>     DECLARE VARIABLE WW_P1 VARCHAR(1000);
> > HO>     DECLARE VARIABLE WW_P2 VARCHAR(1000);
> > HO> BEGIN
> > HO>     WW_Stuff = '';
> > HO>     if (WP_Delete > 0) then begin
> > HO>        WW_P1 = SUBSTRING(WP_texto FROM 1 FOR WP_Start-1);
> > HO>        WW_P2 = SUBSTRING(WP_texto FROM (WP_Start+WP_Delete) FOR
> > HO> CHAR_LENGTH(WP_texto));
> > HO>     end else if (WP_Delete = 0) then begin
> > HO>        WW_P1 = SUBSTRING(WP_texto FROM 1 FOR WP_Start-1);
> > HO>        WW_P2 = SUBSTRING(WP_texto FROM WP_Start FOR
> CHAR_LENGTH(WP_texto));
> > HO>     end
> > HO>     WW_Stuff = WW_P1 || WP_Insert || WW_P2;
> > HO>     SUSPEND;
> > HO> END;
> >
> >
> > HO> Em 12/09/2018 13:49, Hélio Oliveira escreveu:
> >>> Boa tarde Colegas!
> >>>
> >>> Temos alguma função nativa no Firebird que faço o mesmo que essa função
> >>> do C http://www.oohg.org/cl53/nga2123.html.
> >>>
> >>> [ ]'s,
> >>>
> >>> Hélio
> >>>
> >>>
> >>>
> >>> ______________________________________________
> >>> 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://www.firebase.com.br/pesquisa_lista.html
> >>>
> >
> >
> >
> > HO> ______________________________________________
> > HO> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > HO> Para saber como gerenciar/excluir seu cadastro na lista, use:
> > HO> http://www.firebase.com.br/fb/artigo.php?id=1107
> > HO> Para consultar mensagens antigas:
> > HO> http://www.firebase.com.br/pesquisa_lista.html
> >
> >
> > ______________________________________________
> > 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://www.firebase.com.br/pesquisa_lista.html
> >
>
>
>
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista