Comparar e concatenar no Oracle (PL/SQL)

[ad#texto]

Vamos supor que você precise fazer a seguinte comparação no PL/SQL:

IF varTexto || varText2 || varTexto3  = ‘teste de compara texto (string)’ THEN

.....

END IF;

É bem provável que dependendo do tamanho máximo alcançado pela concatenação das variáveis ocorra o seguinte erro:

ORA-04030: sem espaço de memória para processo durante tentativa de alocação de 16328 bytes (koh-kghu call ,pmuccst: adt/record)

Embora o erro aponte para uma possível falta de memória no banco de dados Oracle na verdade a concatenação dentro do IF que está causando o erro.

Uma solução mais imediatista (embora bem deselegante) seria dividir o IF com a concatenação em 3 IF´s encadeados.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.