[firebase-br] Dúvida sobre Select
Carlos Andrade
krlosgilson em gmail.com
Qui Ago 7 21:02:13 -03 2008
Boa Noite! Tenho uma tabela que armazena as aulas práticas dos alunos de um sistema para Auto-Escolas. Estou precisando dar um select que me retorne 1 (para true) ou 0 (para false) se já foram marcadas as aulas de 20 alunos diferentes em um determinado período de datas. Tentei as seguintes procedures:
CREATE PROCEDURE SP_LIMITE_AULAS_VEIC(
VEICULO INTEGER,
DATA_INI DATE,
DATA_FIM DATE)
RETURNS (
YES_NO SMALLINT)
AS
declare variable qtde integer;
begin
/* Verifica se já foram marcadas as 20 aulas do veículo no mês */
select count(*) from AULAS_PRATICAS
where ID_VEICULO =:veiculo and DATA BETWEEN :data_ini and :data_fim
into : qtde;
if (qtde > 19) then yes_no = 1; else yes_no = 0;
suspend;
end
( NESSE EXEMPLO ACIMA ESTÁ ME RETORNANDO VÁRIAS LINHAS GERANDO UM EXCEPTION, MULTIPLE ROWS..... )
CREATE PROCEDURE SP_LIMITE_AULAS_VEIC(
VEICULO INTEGER,
DATA_INI DATE,
DATA_FIM DATE)
RETURNS (
YES_NO SMALLINT)
AS
declare variable qtde integer;
begin
/* Verifica se já foram marcadas as 20 aulas do veículo no mês */
select count(*) from AULAS_PRATICAS
where ID_VEICULO =:veiculo and DATA BETWEEN :data_ini and :data_fim
group by ID_ALUNO
into : qtde;
if (qtde > 19) then yes_no = 1; else yes_no = 0;
suspend;
end
( NESSE EXEMPLO ACIMA NÃO GERA NENHUMA EXCEPTION, MAS ESTÁ MOSTRANDO O RESULTADO NÃO ESPERADO, POIS O RESULTADO ESTÁ MOSTRANDO A QUANTIDADE DE AULAS DE TODOS OS ALUNOS.
Então, o que estou querendo é a quantidade de alunos no período informado que foram marcados no veículo especificado.
Acho que deu para entender!!!
Mais detalhes sobre a lista de discussão lista