15300 - Erro ao executar select com campo muito grande
Problema: Ao executarmos um determinado select dentro de uma regra é apresentado o erro que segue em anexo e abaixo:
Houve um erro ao abrir o cursor C_E501MOP: Erro de acesso ao banco de dados:
Banco de Dados: Oracle 11
Erro do Banco (932): ORA-00932: inconsistent datatypes: expected - got CLOB
Rotina / Tela: Regras
Solução: Solução 15300: Esta situação ocorre porque o campo ObsTit possui 4999 posições, então para poder utilizar este campo tem que ser juntamente com o comando LIKE
select numtit from e301mor where obstit LIKE '%E-MAIL DO BOLETO ENVIADO COM SUCESSO.%'
Caso o problema for num cursor, porém o campo obstit não é passado valor fixo e sim passado uma variável, exemplo:
C_E501MOP.SqlSelect * From E501MOP Where CodEmp = :VNCodEmp
and CodFil = :VNCodFil
and CodFor = :VNCodFor
and CodTpt = :VACodTpt
and NumTit = :VANumTit
and OBSTIT = :VAGravaAtuBan;
Para não ocorrer erro tem que fazer:
C_E501MOP.SqlSelect CODFIL From E501MOP Where CodEmp = :VNCodEmp
and CodFil = :VNCodFil
and CodFor = :VNCodFor
and CodTpt = :VACodTpt
and NumTit = :VANumTit
and dbms_lob.substr(OBSTIT, 100, 1) = :VAGravaAtuBan;
Houve um erro ao abrir o cursor C_E501MOP: Erro de acesso ao banco de dados:
Banco de Dados: Oracle 11
Erro do Banco (932): ORA-00932: inconsistent datatypes: expected - got CLOB
Rotina / Tela: Regras
Solução: Solução 15300: Esta situação ocorre porque o campo ObsTit possui 4999 posições, então para poder utilizar este campo tem que ser juntamente com o comando LIKE
select numtit from e301mor where obstit LIKE '%E-MAIL DO BOLETO ENVIADO COM SUCESSO.%'
Caso o problema for num cursor, porém o campo obstit não é passado valor fixo e sim passado uma variável, exemplo:
C_E501MOP.SqlSelect * From E501MOP Where CodEmp = :VNCodEmp
and CodFil = :VNCodFil
and CodFor = :VNCodFor
and CodTpt = :VACodTpt
and NumTit = :VANumTit
and OBSTIT = :VAGravaAtuBan;
Para não ocorrer erro tem que fazer:
C_E501MOP.SqlSelect CODFIL From E501MOP Where CodEmp = :VNCodEmp
and CodFil = :VNCodFil
and CodFor = :VNCodFor
and CodTpt = :VACodTpt
and NumTit = :VANumTit
and dbms_lob.substr(OBSTIT, 100, 1) = :VAGravaAtuBan;