Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Moloukos
Rank: Programador Sênior
Mensagens: 52 Registrado em: Qui, 18 Set 2008 10:22 pm
Localização: São Paulo - SP
Moloukos Rox
Ter, 30 Jun 2015 2:45 pm
Boa tarde.
Poderiam explicar porque esse update abaixo funciona em alguns casos e outros não:
Selecionar tudo
UPDATE MSA.TEXEMPLO
SET ID_TSE = 10,
DATA = SYSDATE
WHERE ID = P_ID;
Fiz o trunc na data e agora funciona em todos os casos:
Selecionar tudo
UPDATE MSA.TEXEMPLO
SET ID_TSE = 10,
DATA = trunc(SYSDATE)
WHERE ID = P_ID;
Poderiam explicar como o oracle entende as datas e a função específica do trunc.
maxwbh
Rank: Estagiário Sênior
Mensagens: 10 Registrado em: Ter, 21 Out 2014 5:16 pm
Localização: Belo Horizonte - MG
Maxwell da Silva Oliveira
(31) 9325.7479/ 9474.8854
maxwbh@gmail.com
http://lnkd.in/PkcQ5y
Ter, 30 Jun 2015 9:29 pm
Moloukos , Boa noite.
Qual é o erro?
Qual é o tipo e tamanho do campo data ?
SYSDATE retorna um DATE TIME, o TRUNC elimina o TIME deixando somente a parte DATE .
Exemplo :
Selecionar tudo
SYSDATE = 30/06/2015 21:25:30.452
TRUNC(SYSDATE) = 30/06/2015
Moloukos
Rank: Programador Sênior
Mensagens: 52 Registrado em: Qui, 18 Set 2008 10:22 pm
Localização: São Paulo - SP
Moloukos Rox
Qua, 01 Jul 2015 2:03 pm
O problema é que as vezes a data grava e em outras não.
Outro exemplo seria:
Selecionar tudo
UPDATE MSA.TEXEMPLO
SET ID_TSE = 10
where DATA = trunc(SYSDATE);
ou
Esse exemplo, as vezes o update é feito e em outras não.
No material que estudei, sempre vi que o oracle considera data e hora em todas as gravações. É correto isso?
maxwbh
Rank: Estagiário Sênior
Mensagens: 10 Registrado em: Ter, 21 Out 2014 5:16 pm
Localização: Belo Horizonte - MG
Maxwell da Silva Oliveira
(31) 9325.7479/ 9474.8854
maxwbh@gmail.com
http://lnkd.in/PkcQ5y
Qua, 01 Jul 2015 3:17 pm
Moloukos,
o erro é no momento da criação do registro.
Como é feito a criação ?
Moloukos
Rank: Programador Sênior
Mensagens: 52 Registrado em: Qui, 18 Set 2008 10:22 pm
Localização: São Paulo - SP
Moloukos Rox
Qua, 01 Jul 2015 5:20 pm
maxwbh,
Não entendi o porque de ser no momento da criação do registro.
O problema é justamente no momento que a proc é executada e dentro dela existe esse update.
Essa proc é chamada apenas para atualizar um id_tse. As vezes funciona as vezes não.
Colocando o trunc passou a funcionar todas as vezes.
maxwbh
Rank: Estagiário Sênior
Mensagens: 10 Registrado em: Ter, 21 Out 2014 5:16 pm
Localização: Belo Horizonte - MG
Maxwell da Silva Oliveira
(31) 9325.7479/ 9474.8854
maxwbh@gmail.com
http://lnkd.in/PkcQ5y
Qua, 01 Jul 2015 8:29 pm
O problema ocorre é quando o dado é gravado na tabela.
Se na tabela esta "30/06/2015" só vai funcionar com o TRUNC;
Lembre que SYSDATE é a Data atual, se passar 1 segundo apos a gravação os valores são diferentes.
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes