Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

@fabiosantosrj

INSTR() nao funciona quando texto maior de 28337 caracteres

Recommended Posts

Pessoal,

 

Utilizo o Oracle 9i no Win2003.

Tenho o seguinte problema com a funcao instr().

 

Quando utilizo o instr() com textos de até 28337 caracteres tudo funciona perfeito. Porém se utilizo textos com mais que esse tamanho aí a função só retorna 0.

 

O mesmo acontece com qualquer função de tratamento de texto que eu utilize. Por exemplo:

 

Tamanho do texto : 50000

 

length(texto): 28337

substr(texto,28337,10): retorna 1 caracter ao invés de 10

substr(texto,28338,10): retorna vazio

 

e assim por diante.

 

Como fazer para usar a função INSTR() quando o meu texto tem mais que 28337 caracteres?

 

Valeu pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não estou certo pois estou sem o manual nesta máquina, mas creio que o limite é o do varchar2 , 4000 bytes.

 

Tenho no trabalho um esquema para ler type long , na 2ª posto, talvez te ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uso este código para procurar strings em triggers (na 9i já não precisa mais) e views.

Veja se ajuda

 

DECLARE
  VS_BODY  LONG;
BEGIN
  FOR R IN (SELECT * FROM USER_TRIGGERS)
  LOOP
	VS_BODY := R.TRIGGER_BODY;
	IF VS_BODY LIKE '%@%' THEN
	  DBMS_OUTPUT.PUT_LINE('TRIGGER ' || R.TRIGGER_NAME);
	END IF;
  END LOOP;
  --
  FOR S IN (SELECT * FROM USER_VIEWS)
  LOOP
	VS_BODY := S.TEXT;
	IF VS_BODY LIKE '%@%' THEN
	  DBMS_OUTPUT.PUT_LINE('VIEW ' || S.VIEW_NAME);
	END IF;
  END LOOP;
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.