[firebase-br] Procedure Remover Tags HTML - A saga continua...

Christian e Ana Luiza Britto chriseana em gmail.com
Qua Jan 6 17:35:52 -03 2016


Olá Colegas,

Preciso de uma rotina que retire todos os tags html de um campo,
revomovendo tudo o que estiver dentro dos <> apenas (Os coódigos de
acentuação podem ser ignorados).

Seguindo os conselhos do colega Gladiston, poderia tentar uma função
externa. Mas, pretendo rodar o banco em diversas plataformas
(Mac/Win/Linux) o que dificulta o processo, pois precisaria compilar a
tunção em diferentes plataformas...

Decidi, então, fazer via Stored Procedure. Ficou assim:



CREATE OR ALTER PROCEDURE STRIPALLHTML (
    htmlstring blob sub_type 1 segment size 80)
returns (
    stripedstring blob sub_type 1 segment size 80)
as
declare variable tagbegin integer;
declare variable tagend integer;
declare variable tagfound blob sub_type 1 segment size 80 collate unicode_ci_ai;
begin
  TagBegin = position ('<', HTMLString);

  while (:TagBegin > 0) do
  begin
    TagEnd = position ('>', HTMLString, TagBegin);
    TagFound = substring (HTMLString FROM TagBegin FOR ((TagEnd -
TagBegin) + 1));
    HTMLString = replace (HTMLString, TagFound, '');
    TagBegin = position ('<', HTMLString);
  end
  StripedString = HTMLString;
  suspend;
end

Para chamá-la eu uso o seguinte comando:

select items.note, (SELECT stripedString FROM StripAllHTML
(items.note)) from items

A procedure retorna exatamente o resultado que eu preciso. O problema
é que está LENTA DEMAIS. Rodando em um banco com 400 itens o IBExpert
demora quase 2 minutos para dar o retorno... Em média cada campo NOTE
possui 2.000 caracteres...

Estou fazendo algo errado?
Podem dar uma DICA?

Abraços,
Christian




Mais detalhes sobre a lista de discussão lista