[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