Stored Procedure

5 respostas
CarlosFontana

Boa noite pessoal, estou tentando desenvolver uma Stored Procedure no Firebird mas não sei como fazer uma parte dela:

SET TERM ; !!
CREATE PROCEDURE HISTORICOOPERACAO (MES INTEGER)
RETURNS (DATA DATE, DESCRICAO VARCHAR(40), QUANTIDADE INTEGER, SEQUENCIA INTEGER)
AS
BEGIN
   FOR SELECT COMPDATA, ITENSCOMPRA.ITENSCOMPDESCOP, ITENSCOMPRA.ITENSCOMPQUANT, ITENSCOMPRA.ITENSCOMPSEQUENC FROM COMPRA,
   ITENSCOMPRA BETWEEN CURRENT_DATE AND MES  INTO :DATA, :DESCRICAO, :QUANTIDADE, :SEQUENCIA DO
       SUSPEND;
END!!
SET TERM !! ;

Pelo que pesquisei current_date pega a data atual, a minha dificuldade está em pegar a informação, ou seja, pegar a o valor de quantos meses foi informado, exemplo “2” transformar na primeira data do mês no caso no mês de abril e fazer algo do tipo:

select between (current_date "Exemplo '2012-05-13'") and 2012-04-01.
ou
select * from compra where '2012-04-01' < current_date

para que o select retorne terminadas informações desse período.
Se alguém souber, desde já agradeço!

5 Respostas

ViniGodoy

Tópico movido para o fórum de persistência.

Não entendi, pq vc abriu em “Java Básico” se nem de java sua dúvida é?

Além disso, seria bom você dizer o que você gostaria que a SP fizesse.

CarlosFontana

Foi mal ViniGodoy, obrigado por direncionar para o tópico adequado!

A

Entendi seu problema assim: ao chamar a procedure você vai informar a quantidade de meses que quer pesquisar partindo da data atual. Já sabe como pegar a data atual mas não sabe ainda calcular a data que seria resultado da operação com a quantidade de meses.

Esse link deve te ajudar:
http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-intfunc-dateadd.html

E… tipo… nesse trecho, esse between, as datas não deveriam estar ao contrário ?

select between (current_date "Exemplo '2012-05-13'") and 2012-04-01.
CarlosFontana

Exatamente Ademilton, obrigado pelo link, vou verificar.
A posição das datas estão alteradas mesmo, o correto é: between ‘2012-04-01’ and ‘2012-05-13’

Valeu

CarlosFontana

.

Criado 13 de maio de 2012
Ultima resposta 13 de mai. de 2012
Respostas 5
Participantes 3