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.