[firebase-br] Ajuda para criar procedure

Gladiston Santana gladiston em vidy.com.br
Qua Jan 6 09:30:44 -03 2016


Colega, você tem que ser mais especifico na sua pergunta.
Se você quer que outros ajudem, vai colocando uma pergunta de cada vez,
talvez perguntando como faríamos isso ou aquilo ou qual a função para isso
ou aquilo.
Quando você posta um código inteiro e pede ajuda para converter, o que me
vem a cabeça é que 'pô, esse cara quer que eu transcreva um plpgsql para
firebird e de graça?'.
Parece o cara ao meu lado dizendo 'é só por um botãozinho aqui, não custa
nada'.
Meu conselho rápido é, pegue uma função para fazer strip_html em pascal e
converta numa DLL e importe como UDF no Firebird.
Fazer no Firebird demanda muito tempo, pois não se trata de uma conversão,
mas de criação completamente nova fazendo um loop em cima dum texto e
caçando < e > e removendo-os, além disso, achar os codepoints como &ccedil
e converter para Ç. Minha lógica funcionaria assim, mas escrever este tipo
de código só de brincadeira não dá, não sou tão hacker assim, levaria um
dia todo provavelmente para fazê-lo ;)

[]´s e boa sorte.

Em 5 de janeiro de 2016 21:12, Christian e Ana Luiza Britto <
chriseana em gmail.com> escreveu:

> Olá a todos,
>
> Tenho esta função que me ajudaram a escrever para o PostgreSQL e agora
> preciso traduzí-la para o Firebird. Mas, não sei bem como fazer.
> Por favor, alguém pode me ajudar? Trata-se de uma rotina que retira
> todos os córigos HTML de um campo string. Gostaria de saber como posso
> transformá-la em uma procedure compatível com o Firebird.
>
> -- Name: strip_html(text); Type: FUNCTION; Schema: public; Owner: postgres
> --
>
> CREATE FUNCTION strip_html(t text) RETURNS text
>     LANGUAGE plpgsql IMMUTABLE
>     AS $$
> declare
>     r record;
> begin
>     for r in
>         select distinct ce.ch, ce.name
>         from
>             character_entity ce
>             inner join (
>                 select name[1] "name"
>                 from regexp_matches(t, '&([A-Za-z]+?);', 'g') r(name)
>             ) s on ce.name = s.name
>     loop
>         t := replace(t, '&' || r.name || ';', r.ch);
>     end loop;
>
>     for r in
>         select distinct
>             hex[1] hex,
>             ('x' || repeat('0', 8 - length(hex[1])) ||
> hex[1])::bit(32)::int codepoint
>         from regexp_matches(t, '&x([0-9a-f]{1,8}?);', 'gi') s(hex)
>     loop
>         t := regexp_replace(t, '&x' || r.hex || ';', chr(r.codepoint),
> 'gi');
>     end loop;
>
>     for r in
>         select distinct
>             chr(codepoint[1]::int) ch,
>             codepoint[1] codepoint
>         from regexp_matches(t, '&([0-9]{1,10}?);', 'g') s(codepoint)
>     loop
>         t := replace(t, '&' || r.codepoint || ';', r.ch);
>     end loop;
>
>     -- return strip_some_html_codes(t);
>     return regexp_replace(regexp_replace(t, E'(?x)<[^>]*?(\s alt \s* =
> \s* ([\'"]) ([^>]*?) \2) [^>]*? >', E'\3'), E'(?x)(< [^>]*? >)', '',
> 'g');
> end;
>
> ______________________________________________
> 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
>



-- 
--
B em B@BU     iB em M@B.  B em MBBO   MBBMMB em B@BZLr    E@@@@i      r@@@BU
vB em M@O     E em B@Bu   BBBM em 0   G em MMM@N8MBB em ZP5r  B em B@k      8B@@O
 OB em B@q   2 em BBBM    B em B@BO   BB em B@B,.:,7B em B@@L uB em B@,    OB em B@.
 ,@@@B@   @BBB@,    @BBB em 8   M em M@@@     PB em B@B  @@@BN   iB em B@L
  U em B@B2 LB em B@X     B em MBBO   MBBM em B     i em BBB@. 7 em B@Bi  B em B@E
   B@@@BiM em M@B.     @BBM em G   M em MMB@     v@@M em B,  G em B@Z v em B@B.
   7B em B@O em B@B5      B em B@B8   BBBM em B     Z@@@B@   iB@@@2 em B@Br
    NB em M@B em B8       @B em B@8   M em B@B em i:i75 em B@B em r    E@@B em B@Bq
    . em B@@@B@:       B em B@B@   @B@@@B em B@B@@@ME;     .BB em MBB@
     55.ANOS        OMOGBS   PBZGGOOMOO117,        7 em BBB@r
     ==============================================r@@@@F=====
     Gladiston Santana                             8 em B@B,
     Supervisor de TI                             G em B@B7
     Tel.:+551147873122 R:228                    :@B em B0
     Grupo VIDY - SGQ ISO9001 - 55 ANOS          @B em B@.
     Visite nosso site: www·vidy·com·br         BB@@@u
     Visite também : www·expolabor·com·br      GB em B@N



Mais detalhes sobre a lista de discussão lista