[firebase-br] Stored Procedure com Erro

Fortes Marcelo marcelosoftware em yahoo.com.br
Qua Jul 20 21:48:12 -03 2005


Olá Amigos !

Tenho uma Stored Procedure que não está funcionando.

Tenho uma tabela onde eu cadastro o agendamento de determinado material para determinada hora e sala porém alguns materiais são únicos e eu gostaria de prevenir que o mesmo material fosse agendado para uma sala diferente dentro de um horário de outro agendamento já previamente cadastrado por outro usuário ou seja não poder agendar algo que já está agendado. Por exemplo se eu tiver um material digamos DataShow e se alguém agendou o DataShow para sala 101 das 13:00 às 15:00 eu gostaria que não fosse agendado por outro neste mesmo intervalo de horas pro mesmo dia. Até aí a lógica tudo bem mas no IBConsole ele está sempre me retornando erro e parser no primeiro IF

A procedure segue como abaixo.

CREATE EXCEPTION MATERIAL_JA_CADASTRADO “Este Material já está reservado para este horário”;

CREATE PROCEDURE AGENDAR_MATERIAL
(
material     varchar(50),
requisitante varchar(50),
disciplina   varchar(50),
data         date,
horainicio   time,
horafim      time,
local        varchar(50),
curso        varchar(50)
)
RETURNS (
JaCadastrado varchar(50),
Sucesso varchar(50)
)
AS
BEGIN
  SELECT
     PK_CODAGENDAMENTO, MATERIAL, REQUISITANTE, DISCIPLINA, DATA, HORAINICIO,
     HORAFIM, LOCAL, CURSO
  FROM
    TBL_AGENDARMATERIAIS
  WHERE DATA >= SELECT current_date FROM RDB$Database;

  IF NOT(MATERIAL IS NULL) THEN
  BEGIN
     IF (MATERIAL = Material) AND (DATA = Data) THEN
     BEGIN
       IF (:horainicio >= HORAINICIO) OR (:horafim <= HORAFIM) THEN
          EXCEPTION MATERIAL_JA_CADASTRADO;
       ELSE
          INSERT INTO TBL_AGENDARMATERIAIS
                 (MATERIAL, REQUISITANTE, DATA, HORAINICIO, HORAFIM, LOCAL, CURSO)
          VALUES (:material, :requisitante, :data, :horainicio, :horafim, :local, :curso);
     END
  END
  ELSE
    INSERT INTO TBL_AGENDARMATERIAIS
           (MATERIAL, REQUISITANTE, DATA, HORAINICIO, HORAFIM, LOCAL, CURSO)
    VALUES (:material, :requisitante, :data, :horainicio, :horafim, :local, :curso);

  SUSPEND;
END;


__________________________________________________
Converse com seus amigos em tempo real com o Yahoo! Messenger 
http://br.download.yahoo.com/messenger/ 


Mais detalhes sobre a lista de discussão lista