create table examesshift ( fil_codigo integer not null, lae_codigo integer not null, shi_codexame varchar(10) not null, shi_descricaoexame varchar(200), shi_descricaomaterial varchar(80), shi_xml text ); --[lode] create unique index xpkexamesshift on examesshift ( fil_codigo, lae_codigo, shi_codexame ); --[lode] create index xif1examesshift on examesshift ( fil_codigo, lae_codigo ); --[lode] alter table examesshift add primary key (fil_codigo, lae_codigo, shi_codexame); --[lode] create function fn_ti_examesshift() returns opaque as ' declare numrows integer; tmp varchar; begin select count(*) into numrows from labexterno where new.fil_codigo = labexterno.fil_codigo and new.lae_codigo = labexterno.lae_codigo; tmp:=''labexterno|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''lae_codigo='' || new.lae_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela labexterno. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; return new; end;' language 'plpgsql'; --[lode] create trigger ti_examesshift after insert on examesshift for each row execute procedure fn_ti_examesshift(); --[lode] create function fn_tu_examesshift() returns opaque as ' declare numrows integer; tmp varchar; begin select count(*) into numrows from labexterno where new.fil_codigo = labexterno.fil_codigo and new.lae_codigo = labexterno.lae_codigo; tmp:=''labexterno|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''lae_codigo='' || new.lae_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela labexterno. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; return old; end;' language 'plpgsql'; --[lode] create trigger tu_examesshift after update on examesshift for each row execute procedure fn_tu_examesshift(); --[lode] drop function fn_td_labexterno() cascade; --[lode] create function fn_td_labexterno() returns opaque as ' declare numrows integer; begin select count(*) into numrows from examesshift where examesshift.fil_codigo = old.fil_codigo and examesshift.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examesshift.''; end if; select count(*) into numrows from examesmercolab where examesmercolab.fil_codigo = old.fil_codigo and examesmercolab.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examesmercolab.''; end if; select count(*) into numrows from requisicaolabexternopendencia where requisicaolabexternopendencia.fil_codigo = old.fil_codigo and requisicaolabexternopendencia.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela requisicaolabexternopendencia.''; end if; delete from examesindlab where examesindlab.fil_codigo = old.fil_codigo and examesindlab.lae_codigo = old.lae_codigo; select count(*) into numrows from convenios where convenios.fil_codigo = old.fil_codigo and convenios.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela convenios.''; end if; select count(*) into numrows from materialalvaro where materialalvaro.fil_codigo = old.fil_codigo and materialalvaro.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela materialalvaro.''; end if; delete from labexternolotepardini where labexternolotepardini.fil_codigo = old.fil_codigo and labexternolotepardini.lae_codigo = old.lae_codigo; delete from labexternologintegracao where labexternologintegracao.fil_codigo = old.fil_codigo and labexternologintegracao.lae_codigo = old.lae_codigo; delete from labexternoversaotermo where labexternoversaotermo.fil_codigo = old.fil_codigo and labexternoversaotermo.lae_codigo = old.lae_codigo; select count(*) into numrows from examessaomarcos where examessaomarcos.fil_codigo = old.fil_codigo and examessaomarcos.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examessaomarcos.''; end if; delete from examessyslab where examessyslab.fil_codigo = old.fil_codigo and examessyslab.lae_codigo = old.lae_codigo; delete from examesunilab where examesunilab.fil_codigo = old.fil_codigo and examesunilab.lae_codigo = old.lae_codigo; select count(*) into numrows from filiais_postocoleta where filiais_postocoleta.fil_codigo = old.fil_codigo and filiais_postocoleta.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela filiais_postocoleta.''; end if; delete from logimportacaolabexterno where logimportacaolabexterno.fil_codigo = old.fil_codigo and logimportacaolabexterno.lae_codigo = old.lae_codigo; select count(*) into numrows from examessolucao where examessolucao.fil_codigo = old.fil_codigo and examessolucao.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examessolucao.''; end if; select count(*) into numrows from examesdb where examesdb.fil_codigo = old.fil_codigo and examesdb.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examesdb.''; end if; delete from examesatitude where examesatitude.fil_codigo = old.fil_codigo and examesatitude.lae_codigo = old.lae_codigo; delete from examesbalague where examesbalague.fil_codigo = old.fil_codigo and examesbalague.lae_codigo = old.lae_codigo; delete from examesdelta where examesdelta.fil_codigo = old.fil_codigo and examesdelta.lae_codigo = old.lae_codigo; select count(*) into numrows from examematcoletalabexterno where examematcoletalabexterno.fil_codigo = old.fil_codigo and examematcoletalabexterno.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examematcoletalabexterno.''; end if; select count(*) into numrows from examesmatrix where examesmatrix.fil_codigo = old.fil_codigo and examesmatrix.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examesmatrix.''; end if; select count(*) into numrows from examesrede where examesrede.fil_codigo = old.fil_codigo and examesrede.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examesrede.''; end if; delete from examesreacao where examesreacao.fil_codigo = old.fil_codigo and examesreacao.lae_codigo = old.lae_codigo; select count(*) into numrows from pacientelabexterno where pacientelabexterno.fil_codigo = old.fil_codigo and pacientelabexterno.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela pacientelabexterno.''; end if; select count(*) into numrows from requisicaolabexterno where requisicaolabexterno.fil_codigo = old.fil_codigo and requisicaolabexterno.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela requisicaolabexterno.''; end if; delete from examessergiofranco where examessergiofranco.fil_codigo = old.fil_codigo and examessergiofranco.lae_codigo = old.lae_codigo; delete from examesalvaro where examesalvaro.fil_codigo = old.fil_codigo and examesalvaro.lae_codigo = old.lae_codigo; select count(*) into numrows from examesjalis where examesjalis.fil_codigo = old.fil_codigo and examesjalis.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examesjalis.''; end if; delete from examespardini where examespardini.fil_codigo = old.fil_codigo and examespardini.lae_codigo = old.lae_codigo; select count(*) into numrows from loteexterno where loteexterno.fil_codigo = old.fil_codigo and loteexterno.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela loteexterno.''; end if; return old; end;' language 'plpgsql'; --[lode] create trigger td_labexterno after delete on labexterno for each row execute procedure fn_td_labexterno(); --[lode] drop function fn_ti_labexterno() cascade; --[lode] create function fn_ti_labexterno() returns opaque as ' declare numrows integer; tmp varchar; begin select count(*) into numrows from prazoentrega where new.fil_codigo = prazoentrega.fil_codigo and new.prz_codigo = prazoentrega.prz_codigo; tmp:=''prazoentrega|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''prz_codigo='' || new.prz_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.prz_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela prazoentrega. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; select count(*) into numrows from metodologia where new.fil_codigo = metodologia.fil_codigo and new.met_codigo = metodologia.met_codigo; tmp:=''metodologia|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''met_codigo='' || new.met_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.met_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela metodologia. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; select count(*) into numrows from setores where new.fil_codigo = setores.fil_codigo and new.set_codigo = setores.set_codigo; tmp:=''setores|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''set_codigo='' || new.set_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.set_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela setores. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; select count(*) into numrows from usuario where new.usr_codconferir = usuario.usr_codigo; tmp:=''usuario|''; tmp:=tmp || ''usr_codigo='' || new.usr_codconferir || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.usr_codconferir is not null and numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela usuario. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; select count(*) into numrows from filiais_postocoleta where new.fil_codigo = filiais_postocoleta.fil_codigo; tmp:=''filiais_postocoleta|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( numrows = 0 ) then raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne''); end if; return new; end;' language 'plpgsql'; --[lode] create trigger ti_labexterno after insert on labexterno for each row execute procedure fn_ti_labexterno(); --[lode] drop function fn_tu_labexterno() cascade; --[lode] create function fn_tu_labexterno() returns opaque as ' declare numrows integer; tmp varchar; begin if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesshift where examesshift.fil_codigo = old.fil_codigo and examesshift.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesshift.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesmercolab where examesmercolab.fil_codigo = old.fil_codigo and examesmercolab.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesmercolab.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from requisicaolabexternopendencia where requisicaolabexternopendencia.fil_codigo = old.fil_codigo and requisicaolabexternopendencia.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolabexternopendencia.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesindlab where examesindlab.fil_codigo = old.fil_codigo and examesindlab.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesindlab.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from convenios where convenios.fil_codigo = old.fil_codigo and convenios.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenios.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from materialalvaro where materialalvaro.fil_codigo = old.fil_codigo and materialalvaro.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialalvaro.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from labexternolotepardini where labexternolotepardini.fil_codigo = old.fil_codigo and labexternolotepardini.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela labexternolotepardini.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from labexternologintegracao where labexternologintegracao.fil_codigo = old.fil_codigo and labexternologintegracao.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela labexternologintegracao.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from labexternoversaotermo where labexternoversaotermo.fil_codigo = old.fil_codigo and labexternoversaotermo.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela labexternoversaotermo.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examessaomarcos where examessaomarcos.fil_codigo = old.fil_codigo and examessaomarcos.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examessaomarcos.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examessyslab where examessyslab.fil_codigo = old.fil_codigo and examessyslab.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examessyslab.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesunilab where examesunilab.fil_codigo = old.fil_codigo and examesunilab.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesunilab.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from filiais_postocoleta where filiais_postocoleta.fil_codigo = old.fil_codigo and filiais_postocoleta.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiais_postocoleta.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from logimportacaolabexterno where logimportacaolabexterno.fil_codigo = old.fil_codigo and logimportacaolabexterno.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logimportacaolabexterno.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examessolucao where examessolucao.fil_codigo = old.fil_codigo and examessolucao.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examessolucao.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesdb where examesdb.fil_codigo = old.fil_codigo and examesdb.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesdb.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesatitude where examesatitude.fil_codigo = old.fil_codigo and examesatitude.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesatitude.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesbalague where examesbalague.fil_codigo = old.fil_codigo and examesbalague.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesbalague.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesdelta where examesdelta.fil_codigo = old.fil_codigo and examesdelta.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesdelta.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examematcoletalabexterno where examematcoletalabexterno.fil_codigo = old.fil_codigo and examematcoletalabexterno.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematcoletalabexterno.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesmatrix where examesmatrix.fil_codigo = old.fil_codigo and examesmatrix.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesmatrix.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesrede where examesrede.fil_codigo = old.fil_codigo and examesrede.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesrede.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesreacao where examesreacao.fil_codigo = old.fil_codigo and examesreacao.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesreacao.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from pacientelabexterno where pacientelabexterno.fil_codigo = old.fil_codigo and pacientelabexterno.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacientelabexterno.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from requisicaolabexterno where requisicaolabexterno.fil_codigo = old.fil_codigo and requisicaolabexterno.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolabexterno.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examessergiofranco where examessergiofranco.fil_codigo = old.fil_codigo and examessergiofranco.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examessergiofranco.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesalvaro where examesalvaro.fil_codigo = old.fil_codigo and examesalvaro.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesalvaro.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesjalis where examesjalis.fil_codigo = old.fil_codigo and examesjalis.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesjalis.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examespardini where examespardini.fil_codigo = old.fil_codigo and examespardini.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examespardini.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from loteexterno where loteexterno.fil_codigo = old.fil_codigo and loteexterno.lae_codigo = old.lae_codigo into numrows; if (numrows > 0) then raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexterno.''; end if; end if; select count(*) into numrows from prazoentrega where new.fil_codigo = prazoentrega.fil_codigo and new.prz_codigo = prazoentrega.prz_codigo; tmp:=''prazoentrega|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''prz_codigo='' || new.prz_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.prz_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela prazoentrega. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; select count(*) into numrows from metodologia where new.fil_codigo = metodologia.fil_codigo and new.met_codigo = metodologia.met_codigo; tmp:=''metodologia|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''met_codigo='' || new.met_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.met_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela metodologia. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; select count(*) into numrows from setores where new.fil_codigo = setores.fil_codigo and new.set_codigo = setores.set_codigo; tmp:=''setores|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=tmp || ''set_codigo='' || new.set_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.fil_codigo is not null and new.set_codigo is not null and numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela setores. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; select count(*) into numrows from usuario where new.usr_codconferir = usuario.usr_codigo; tmp:=''usuario|''; tmp:=tmp || ''usr_codigo='' || new.usr_codconferir || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( new.usr_codconferir is not null and numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela usuario. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; select count(*) into numrows from filiais_postocoleta where new.fil_codigo = filiais_postocoleta.fil_codigo; tmp:=''filiais_postocoleta|''; tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|''; tmp:=substring(tmp,1,length(tmp)-1); if ( numrows = 0 ) then raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne''); end if; return old; end;' language 'plpgsql'; --[lode] create trigger tu_labexterno after update on labexterno for each row execute procedure fn_tu_labexterno(); --[lode] insert into atualizacoes(atu_nome) values ('v23030001_110423.sql'); --[lode] create or replace function procurarNoArray(a anyarray, pesquisar anyelement) returns int as $$ declare pos int; retorno int; menor int; maior int; begin if (a is not null) then menor = array_lower(a, 1); maior = array_upper(a, 1); if (menor is not null and maior is not null) then for pos in menor..maior loop if a[pos] = pesquisar then retorno = pos; end if; end loop; end if; end if; return retorno; end; $$ language plpgsql; --[lode] create or replace function verificaMultiguiasJalis(filial int, codigoRequisicao int, adicionarAtual bool, trazerExcluidas bool) returns int[] as $$ declare retorno int[] = array[]::int[]; multiguia int; filhas int[] = array[]::int[]; contador int; begin --verifica se a requisicao eh a mae em multiguia if (trazerExcluidas) then for multiguia in (select a.req_kodigo from requisicaorequisicao a left join requisicao b on a.fil_codigo = b.fil_codigo and a.req_kodigo = b.req_codigo where a.fil_codigo = filial and a.req_codigo = codigoRequisicao and (b.req_excluida = false or (b.req_excluida and b.req_origemagendamento)) order by a.req_kodigo) loop retorno = array_append(retorno, multiguia); end loop; else for multiguia in (select a.req_kodigo from requisicaorequisicao a left join requisicao b on a.fil_codigo = b.fil_codigo and a.req_kodigo = b.req_codigo where a.fil_codigo = filial and a.req_codigo = codigoRequisicao order by a.req_kodigo) loop retorno = array_append(retorno, multiguia); end loop; end if; --verifica se a requisicao eh a filha em multiguia if (trazerExcluidas) then for multiguia in (select a.req_codigo from requisicaorequisicao a left join requisicao b on a.fil_codigo = b.fil_codigo and a.req_codigo = b.req_codigo where a.fil_codigo = filial and a.req_kodigo = codigoRequisicao and (b.req_excluida = false or (b.req_excluida and b.req_origemagendamento)) order by a.req_codigo) loop retorno = array_append(retorno, multiguia); filhas = verificaMultiguiasJalis(filial, multiguia, false, trazerExcluidas); end loop; else for multiguia in (select a.req_codigo from requisicaorequisicao a left join requisicao b on a.fil_codigo = b.fil_codigo and a.req_codigo = b.req_codigo where a.fil_codigo = filial and a.req_kodigo = codigoRequisicao and (b.req_excluida = false or (b.req_excluida and b.req_origemagendamento)) order by a.req_codigo) loop retorno = array_append(retorno, multiguia); filhas = verificaMultiguiasJalis(filial, multiguia, false, trazerExcluidas); end loop; end if; if (filhas is not null and array_length(filhas, 1) > 0) then for contador in array_lower(filhas, 1)..array_upper(filhas, 1) loop multiguia = filhas[contador]; if (procurarNoArray(retorno, multiguia) is null) then if (multiguia = codigoRequisicao) then if (adicionarAtual) then retorno = array_append(retorno, multiguia); end if; else retorno = array_append(retorno, multiguia); end if; end if; end loop; end if; if (adicionarAtual and procurarNoArray(retorno, codigoRequisicao) is null) then retorno = array_append(retorno, codigoRequisicao); end if; return retorno; end; $$ language plpgsql; --[lode] insert into atualizacoes(atu_nome) values ('v23030002_240423.sql'); --[lode] alter table convenios add con_exigirtoken boolean default false, add con_mascaratoken varchar(10); --[lode] alter table requisicao add req_token varchar(10); --[lode] insert into atualizacoes(atu_nome) values ('v23030003_180523.sql'); --[lode]