Como Pegar parte de um campo LONG?

29/11/2012

0

Boa tarde,
Preciso pegar parte de um campo do tipo LONG, pois o mesmo é muito grande.

Exemplo, mas que da erro:
SELECT SUBSTR(DESCRICAOCOMPLETA1,100) FROM CURSOS

No aguardo.
Marcoridolphi

Marcoridolphi

Responder

Posts

29/11/2012

Claudia Nogueira

Não sei se você colou aqui exatamente como estava fazendo, mas o 1 estava junto com o campo.

SELECT SUBSTR(DESCRICAOCOMPLETA,1,100) FROM CURSOS 


Se não for isso, posta o erro exato.
Responder

29/11/2012

Marcoridolphi

Desculpe,
Esse é o script
SELECT A.CHAPA, A.MES, A.ANO, SUBSTR(B.MENSAGEMERRO,1,100) AS TIPOLONG
FROM PFHSTPROV A
INNER JOIN PLOGFUNCIONARIO B ON B.EXECID = A.EXECIDFER

Abaixo o erro.
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
Responder

29/11/2012

Deivison Melo

Já tentou dar um cast?

select a.chapa, a.mes, a.ano, substr(cast (b.mensagemerro as varchar),1,100) as tipolong
from pfhstprov a
inner join plogfuncionario b on b.execid = a.execidfer
Responder

29/11/2012

Deivison Melo

Tenta assim tb:

select a.chapa, a.mes, a.ano, substr(to_char(b.mensagemerro),1,100) as tipolong
from pfhstprov a
inner join plogfuncionario b on b.execid = a.execidfer


ou ainda dá uma olhada aqui!!

http://glufke.net/oracle/viewtopic.php?t=3905

http://itknowledgeexchange.techtarget.com/itanswers/how-to-convert-long-to-clob-or-to-varchar-type-in-select-statement/

Funções de conversão:

http://psoug.org/reference/convert_func.html

Ainda tem esse tópico abaixo:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:839298816582
Responder

29/11/2012

Deivison Melo

Ainda tem esse exemplo em bloco anônimo:

declare

t_char varchar2(20);

begin

for cr in (select long_desc from table) loop

t_char := substr(cr.long_desc,1,20);

dbms_output.put_line(t_char);

end loop;

end;
Responder

29/11/2012

Marcoridolphi

Todos os tipos ja foram testados e dão os mesmos erro no anterior.
Agora sobre esses scripts enviados, tenho que mudar alguma coisa, ou executo como esta?
Responder

29/11/2012

Deivison Melo

os dois primeiros eu coloquei da mesma forma q estava sua tabela apenas adicionando as funções de conversão!!

O bloco anônimo vc tem q trocar os campos dele pelos q está tentando converter...

Já leu todos os artigos e nenhum atendeu a vc?
Responder

29/11/2012

Deivison Melo

testei esse bloco nao vi erros...

DECLARE
vlong LONG := '43702198ryiwqeyr2q93741234h12iu34y1o2iu34y128734123iu421hiu3';
vvar VARCHAR2(32767);
BEGIN
vvar := vlong;
dbms_output.put_line('Varchar2: '||vvar);
END;
Responder

29/11/2012

Marcoridolphi

Amigão,
Me ajude no seguinte,

Esse select aqui que eu preciso ver:

SELECT MENSAGEMERRO as CAMPOLONG
FROM PLOGFUNCIONARIO

Pode me ajudar como fazer?
Responder

01/08/2017

Carlos Cavalcanti

Prezados, bom dia.
Preciso extrair uma informação de uma consulta SQL. Segue...

" SELECT CD_ATENDIMENTO, DS_INFO_ATENDIMENTO
FROM ATENDIME_INFO
WHERE DS_INFO_ATENDIMENTO LIKE '%ELETIVA%' "

-- A COLUNA DS_INFO_ATENDIMENTO É DO TIPO LONG

Ao colocar a Cláusula acima, Oracle retorna que esperava CHAR e obteve LONG.

Como posso contornar o problema?

Detalhe:
Conteúdo da coluna DS_INFO_ATENDIMENTO possui a seguinte informação abaixo:

" INTERNAÇÃO
1) TIPO DE INTERNAÇÃO: ( ) ELETIVA ( X ) URGÊNCIA ( ) 1° HORÁRIO
2) PERFIL: ( X ) CLÍNICA ( ) CIRÚRGICA ( ) OBSTÉTRICA
3) TUSS: 00021010X1

... "
Responder

07/08/2017

Jgsf

eu criei uma função.

passo 1:

CREATE OR REPLACE FUNCTION "SEARCH_LONG" (r rowid) return varchar2 is
temporary_varchar varchar2(4000);
begin
select ai.ds_info_atendimento into temporary_varchar from dbamv.atendime_info ai where rowid=r;
return temporary_varchar;
end;


---
passo2: não esquecer de conceder grant de execução

GRANT EXECUTE ON "DBAMV"."SEARCH_LONG" TO "MV2000";
GRANT EXECUTE ON "DBAMV"."SEARCH_LONG" TO "MVINTEGRA";

---

Passo 2:usar a função a partir do select da view.

select ate.cd_atendimento,search_long(ainfo.rowid) ds_info_atendimentoselect
from atendime ate
,atendime_info ainfo
where ate.cd_atendimento = ainfo.cd_atendimento(+);



boa sorte..
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar