GARANTIR DESCONTO

Fórum Mudando a Data de pesquisa. #564196

17/10/2016

0

Boa Tarde, Pessoal

Seguinte estou criando um Select para um relatório, e me deparei com a seguinte dificuldade, usei bastante a função do Oracle "SYSDATE", agora quero ver um jeito de pode alterar as datas todas de uma vez, já tentei inserir uma variável, mas não consegui.

Segue parte do código, neste caso esta só com uma linha após o select, mas no original tem muitas, semelhantes a ela:
SELECT

"TRUNC"("MONTHS_BETWEEN"(SYSDATE ,BEM.DTINIREFCIAP)) AS MESES_JA_UTILIZADA


FROM

TCIBEM BEM,
TGFPRO PRO


WHERE BEM.CODEMP = 1
AND PRO.CODPROD = BEM.CODPROD

AND BEM.DTFIMREFCIAP >= "TRUNC"(SYSDATE, 'MONTH')



Desde já agradeço, e muito a ajuda pessoal.
Sergio

Sergio

Responder

Posts

18/10/2016

Roberto Spernega

Bom dia Sergio,

Estes SELECTS estão num script (arquivo texto), Forms, Reports, Procedures ou Functions?
Depende de onde estiver a solução é diferente.

Se forem scripts, puros, que você executa pelo sqlplus, tem que criar uma VARIABLE do tipo texto.
variable v_data varchar2(10);

E se referenciar a ela com a formatação de data.
To_date(:v_data,'dd/mm/yyyy')

SELECT TRUNC(MONTHS_BETWEEN(To_date(:v_data,'dd/mm/yyyy'),BEM.DTINIREFCIAP)) AS MESES_JA_UTILIZADA
FROM TCIBEM BEM, TGFPRO PRO
WHERE BEM.CODEMP = 1
AND PRO.CODPROD = BEM.CODPROD
AND BEM.DTFIMREFCIAP >= TRUNC(To_date(:v_data,'dd/mm/yyyy'), 'MONTH')

seria mas ou menos isso.

Se for um bloco PLSQL já é de outro jeito...
Responder

Gostei + 0

18/10/2016

Sergio

Bom Dia, Roberto

Maninho sou leigo ainda no assunto, mas uso esse select para um relatório no Navicat, consulta direto no banco de dados de meu sistema.
Coloquei como me falou mas apresentou o erro:

[SQL]SELECT 
TRUNC(MONTHS_BETWEEN("TO_DATE"(:v_data,''dd/mm/yyyy''),BEM.DTINIREFCIAP)) AS MESES_JA_UTILIZADA

FROM TCIBEM BEM, TGFPRO PRO
WHERE BEM.CODEMP = 1
AND PRO.CODPROD = BEM.CODPROD
[Err] ORA-01008: nem todas as variáveis são limitadas
Responder

Gostei + 0

18/10/2016

Roberto Spernega

Sergio,

Este erro é de variável não encontrada.
Não conheço o NAVICAT, vi apenas que é uma ferramenta para acessar bancos de dados.

[tagcod][SQL]variable v_data varchar2(10);
[tagcod][SQL]SELECT
TRUNC(MONTHS_BETWEEN("TO_DATE"(:v_data,''dd/mm/yyyy''),BEM.DTINIREFCIAP)) AS MESES_JA_UTILIZADA
FROM TCIBEM BEM, TGFPRO PRO
WHERE BEM.CODEMP = 1
AND PRO.CODPROD = BEM.CODPROD
Responder

Gostei + 0

18/10/2016

Sergio

Boa Tarde, Roberto

Voltei para o Sql Developer e funcionou que uma beleza.

Muito obrigado, maninho.
Responder

Gostei + 0

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

Aceitar