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
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
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)