Duvida quanto a exeucção de SP usando IbExpert.

Firebird

12/03/2007

Fiz uma Sp assim:
begin
if (exists(select id_Depart from Depart where (id_Depart = id_Depart)))then
update Depart
set Departamento = :Departamento
where (id_Depart =:id_Depart);
else
insert into depart (id_depart, Departamento)
values (
GEN_ID(gen_depart_id,1),
:Departamento);

/* Procedure Text */
suspend;
end

Quando mando executar ela funciona normalmente, ou seja, não dá nenhum erro, o valor do Generator vai se acrescentando, no entanto qdo entro na tabela os dados não estão gravados, mesmo comitando eles não aparecem. Executo isso no IbExpert. Por Ex. tenho 3 registros, executo a Sp, o valor do generator acrescenta mas a tabela continua com os 3 registros.
Alguém pode me dizer que ta acontecendo?
Agradeço quem puder ajudar . . .


Amilton/pr

Amilton/pr

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

12/03/2007

talvez o problema esteja nessa linha:
if (exists(select id_Depart from Depart where (id_Depart = id_Depart)))then

creio que o correto deva ser:
if (exists(select id_Depart from Depart where (id_Depart = [b:093b62d8c7]:id_Depart[/b:093b62d8c7]))) then


GOSTEI 0
Amilton/pr

Amilton/pr

12/03/2007

então, estou executando a Sp assim:
execute procedure atual_depa (gen_id(gen_depart_id,1),´naum da certo´);

dai dá esse erro?

PRIMEIRA.
Não foi posivel gravar o registro.
At trigger ´DEPART_BI´
At procedure ´ATUAL_DEPA´.

obs.- Primeira é o nome da Exception;
a outra linha é a trigger before post da tabela.

A trigger ta assim:
AS
BEGIN
IF (NEW.ID_DEPART IS NULL) THEN
NEW.ID_DEPART = GEN_ID(GEN_DEPART_ID,1);
else
exception primeira;
END

Agredeço pela atenção . . .


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/03/2007

tente assim:
begin
  if exists(select id_Depart from Depart where id_Depart = :id_Depart) then
    update Depart
      set Departamento = :Departamento
    where id_Depart =:id_Depart;
  else
    insert into depart (id_depart, Departamento)
    values (:id_Depart, :Departamento);

  /* Procedure Text */
  suspend;
end



GOSTEI 0
Amilton/pr

Amilton/pr

12/03/2007

meu amigo deu certo a SP mas tendo que alterar a Trigger.
Inicialmente tava assim:
IF (NEW.ID_DEPART IS NULL) THEN
NEW.ID_DEPART = GEN_ID(GEN_DEPART_ID,1);
else
exception primeira;

então dava erro na exception, mudei dessa forma:
AS
BEGIN
IF (NEW.ID_DEPART IS NULL) THEN
NEW.ID_DEPART = GEN_ID(GEN_DEPART_ID,1);
END

Não deu mais o erro, mas eu quero manter a Exception para no caso de acontecer algum erro mostrar a mensagem, então agora preciso incluir a Exception dentro da Trigger, ou seja, se acontecer algum erro mostrar a mensagem da exception. Pode ajudar.
Muito obrigado pela ajuda . . . .

Um abraço . . .


GOSTEI 0
Amilton/pr

Amilton/pr

12/03/2007

ainda não consegui colocar essa Exception dentro da Trigger. Alguém pode ajudar?


GOSTEI 0
POSTAR