- This topic has 5 replies, 3 voices, and was last updated 9 years, 11 months ago by rman.
-
AuthorPosts
-
12 de novembro de 2014 at 6:32 pm #107119Marco BorgesParticipant
Prezados.
Tenho uma rotina que faz um insert a partir de um select.Via linux na crown de agendamento.
Lá pelas tantas o meu problema é este:
Via PL SQL
,substr(substr(dv.div_bem,instr(dv.div_bem,’|Convênio: ‘,1,1)+11,99),1,
instr(substr(dv.div_bem,instr(dv.div_bem,’|Convênio: ‘,1,1)+11,99),’|’,1,1)-1)
as CONVENIOLinha: PRODUTO FB:FLEX BALAROTI MASTER DOMESTICO|TIPO:005547224804104003|CORE:VP|
Resultado:
FEDERAL
MARINHA
PREF ITAGUAI
MARINHAAgora via Shell do Linux na mesma coluna:
Resultado:
nciado: 7477,99Alguém tem uma ideia do que pode estar acontecendo ?
3 de dezembro de 2014 at 4:50 pm #107167caadecarvalhoParticipantMarco Borges,
Você poderia colar os dois códigos e o erro que está aparecendo, pois não entendi o problema.
Abraços.
11 de dezembro de 2014 at 8:34 pm #107206Marco BorgesParticipantClaro meu caro.
abaixo eu tenho uma consulta/insert que via pl sql developer nao dá galho a inclusão dos dados:
insert into BNS_BOLETOS
select distinct
bl.bol_datainclusao as DT_INC
,de.dev_cpf as CPF
,dv.div_nrocontrato as CONTRATO
,bl.bol_usu_codalteracao as USU_COD
,bl.bol_nossonumero as NOSSO_N
,trunc(bl.bol_datavcto) as VENCTO
,bl.bol_valor as VALOR
,bl.bol_uni_cod as FILIAL
,ROUND((trunc(sysdate)-1)-pa.par_datavcto) as ATRASO
,substr(substr(dv.div_bem,instr(dv.div_bem,’|Convênio: ‘,1,1)+11,99),1,
instr(substr(dv.div_bem,instr(dv.div_bem,’|Convênio: ‘,1,1)+11,99),’|’,1,1)-1)
as CONVENIO
,substr(bl.bol_parc_plano,1,instr(bl.bol_parc_plano,’/’,1,1)-1) as PARCELA
,substr(bl.bol_parc_plano,instr(bl.bol_parc_plano,’/’,1,1)+1,2) as PLANO
,hi.his_tht_cod as COD_OCO
,hi.his_pef_cod as PEF_COD
,sysdate as MOMENTO
from boleto bl
join historico hi on bl.bol_his_cod = hi.his_cod
and hi.his_pro_cod = ‘BNS’
and hi.his_datahora >= to_date(to_char(sysdate-1,’dd/mm/yyyy’)||’ 00:00:00′,’dd/mm/yyyy hh24:mi:ss’)
and hi.his_datahora = to_date(to_char(sysdate-1,’dd/mm/yyyy’)||’ 00:00:00′,’dd/mm/yyyy hh24:mi:ss’)
and bl.bol_datainclusao < to_date(to_char(sysdate ,'dd/mm/yyyy')||' 00:00:00','dd/mm/yyyy hh24:mi:ss')e a coluna convenio me apresenta os dados corretamente:
FEDERAL
etc
etc
etcPorem se eu faço a inclusão via shell do linux
**script abaixo***
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export OH=$ORACLE_HOME
export ORACLE_SID=***
export PATHdate
sqlplus /nolog < SQL> Connected.
SQL> SQL>
12 rows created.Commit complete.
Ele apresenta a coluna Convenio assim:
nciado: 2116,42Entende meu caro 🙂
12 de dezembro de 2014 at 4:43 pm #107207caadecarvalhoParticipant@Marco Borges,
Não tem lógica o script SQL funcionar via SQL Developer e não funcionar quando executado pelo SO. Analise se os códigos estão idênticos e depois parta para a análise dos dados para poder entender o porque do resultado.
Abraços.
16 de dezembro de 2014 at 11:29 pm #107231Marco BorgesParticipantResolvido:
O que acontece, no Shell do linux ele considera o Convênio (ê) como caracter especial e se perde.
ou se criaria uma function para tratar ou menos trabalhoso pedi para o desenv fazer a contagem a partir do CONV como é a unica palavra que tem na string com esse inicio nao tem erro.
Obrigado ao amigo pela ajuda.
17 de dezembro de 2014 at 2:07 pm #107232rmanParticipant@Marco Borges
Creio que se configurar a variável NLS_LANG de forma adequada o problema é resolvido.
-
AuthorPosts
- You must be logged in to reply to this topic.