Fórum Erro na hora de gravar no firebird #399181

14/04/2011

0

Ola amigos  por favor me ajudem estou criando uma aplicação onde existe um campo apagado com 'S'ou 'N' onde  o usário altera este status onde este campo tem um dominio como 'N'  e existe uma procedure para gravação dos dados mas na hora de executar a pocedure surge a mesagem que o campo apagado esta como not null e não sei como fazer a procedure gravar esta determinado dado.   Alguem podeira me ajudar a executar a procedure segue abaixo a tabela com os dominios e procedures     DOMAIN DM_APAGADO AS CHAR(1) CHARACTER SET WIN1252 DEFAULT 'N' CHECK (value in( 'S','N'))      TABLE CODIGO_UNC (
                                                 UNC        DM_UNC NOT NULL,                                                   DESCRICAO  DM_DECRICAO,                                                   APAGADO    DM_APAGADO    ), ALTER TABLE CODIGO_UNC ADD CONSTRAINT PK_UNC PRIMARY KEY (UNC);     CREATE OR ALTER PROCEDURE PROC_UNC_INS (
    unc dm_unc not null,
    descricao dm_decricao)
as
begin
  if (exists(select unc from codigo_unc where (unc = :UNC)))then
   update  codigo_unc
   set unc = :unc
   where (UNC = :UNC);
   else
   insert into  codigo_unc(
   unc,
   descricao)
   values (:unc, :DESCRICAO);
 end^CREATE OR ALTER PROCEDURE PROC_UNC_INS (
    unc dm_unc not null,
    descricao dm_decricao)
as
begin
  if (exists(select unc from codigo_unc where (unc = :UNC)))then
   update  codigo_unc
   set unc = :unc
   where (UNC = :UNC);
   else
   insert into  codigo_unc(
   unc,
   descricao)
   values (:unc, :DESCRICAO);
 end;     Ou estou montando errado que puder ajudar ficarei muito grato      
 
Diogenes Dourado

Diogenes Dourado

Responder

Posts

14/04/2011

Emerson Nascimento

sinceramente não entendi o porquê daquela instrução de alteração (update). ela não faz nada e por isso não a coloquei na minha solução.

testei e funcionou perfeitamente:

CREATE PROCEDURE PROC_UNC_INS (
    unc integer,
    descricao varchar(30))
as
begin
  if (not (exists(select unc from codigo_unc where unc = :unc))) then
    insert into codigo_unc(unc, descricao)
    values (:unc, :DESCRICAO);
end


Responder

Gostei + 0

14/04/2011

Diogenes Dourado


Se por acaso o codigo ja existir no banco ele faz somente as alterações que foram feitas 

Grato

Diogenes
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar