-
Notifications
You must be signed in to change notification settings - Fork 96
SQL Uteis
Este documento reúne instruções SQL que podem ser úteis na manutenção do SIGA.
=== Atualiza id_Inicial de pessoas que tiveram o id_Inicial alterado na importação. ===
/*USUÁRIOS QUE TIVERAM O ID_INICIAL ALTERADO*/
DECLARE
TYPE REF_CURSOR IS REF CURSOR;
PESSOA_ATUAL corporativo.DP_PESSOA%rowtype;
PESSOA_ANTIGA corporativo.DP_PESSOA%rowtype;
CURSOR PESSOAS_ALTERADAS_QRY IS
SELECT matricula, count(distinct(id_pessoa_inicial)) from corporativo.dp_pessoa where id_orgao_usu = 1 group by matricula having count(distinct(id_pessoa_inicial)) = 2;
PESSOA_ANTIGA_QRY REF_CURSOR;
PESSOA_ATUAL_QRY REF_CURSOR;
BEGIN
DBMS_OUTPUT.ENABLE(100000);
FOR P_AUT IN PESSOAS_ALTERADAS_QRY LOOP
OPEN PESSOA_ATUAL_QRY FOR SELECT * FROM corporativo.DP_PESSOA WHERE MATRICULA = P_AUT.matricula and id_orgao_usu = 1 and data_fim_pessoa is null;
fetch PESSOA_ATUAL_QRY INTO PESSOA_ATUAL;
OPEN PESSOA_ANTIGA_QRY FOR SELECT * FROM corporativo.DP_PESSOA WHERE MATRICULA = P_AUT.matricula and id_orgao_usu = 1 and data_fim_pessoa is not null and id_pessoa = id_pessoa_inicial order by id_pessoa ;
FETCH PESSOA_ANTIGA_QRY INTO PESSOA_ANTIGA;
if PESSOA_ATUAL.NOME_PESSOA is not null then
--dbms_output.put_line( 'NOME_ATUAL: ' || PESSOA_ATUAL.NOME_PESSOA || ' ID_PESSOA ' || PESSOA_ATUAL.MATRICULA );
--dbms_output.put_line( 'NOME_ANTIGA: ' || PESSOA_ANTIGA.NOME_PESSOA || ' ID_PESSOA_ANTIGA ' || PESSOA_ANTIGA.MATRICULA );
update corporativo.dp_pessoa
set id_pessoa_inicial = PESSOA_ANTIGA.id_pessoa_inicial
where id_pessoa_inicial = PESSOA_ATUAL.id_pessoa_inicial;
update corporativo.cp_marca
set id_pessoa_ini = PESSOA_ANTIGA.id_pessoa_inicial
where id_pessoa_ini = PESSOA_ATUAL.id_pessoa_inicial;
end if;
CLOSE PESSOA_ANTIGA_QRY;
CLOSE PESSOA_ATUAL_QRY;
END LOOP;
END;
=== Consultar um documento ===
/*CONSULTAR UM DOCUMENTO*/
select d.*
from
(ex_documento d inner join ex_forma_documento f on d.id_forma_doc = f.id_forma_doc) inner join corporativo.cp_orgao_usuario o
on
d.id_orgao_usu = o.id_orgao_usu
where
o.sigla_orgao_usu = 'RJ' and
f.sigla_forma_doc = 'REQ' and
d.ano_emissao = 2012 and
d.num_expediente = 12345;
/*MOVIMENTACOES DE UM DOCUMENTO*/
select tpMov.descr_tipo_movimentacao, mov.* from (ex_movimentacao mov inner join ex_tipo_movimentacao tpMov on mov.id_tp_mov = tpmov.id_tp_mov) where id_mobil in (
select mob.id_mobil from ex_mobil mob where id_doc in
(
select d.id_doc
from
(ex_documento d inner join ex_forma_documento f on d.id_forma_doc = f.id_forma_doc) inner join cp_orgao_usuario o
on
d.id_orgao_usu = o.id_orgao_usu
where
o.sigla_orgao_usu = 'RJ' and
f.sigla_forma_doc = 'REQ' and
d.ano_emissao = 2012 and
d.num_expediente = 04067
)
) order by mov.dt_mov;
/*CONSULTAR MOBILs DE UM DOCUMENTO*/
select mob.*
from
((ex_documento d inner join siga.ex_mobil mob on d.id_doc = mob.id_doc)
inner join corporativo.cp_orgao_usuario o on d.id_orgao_usu = o.id_orgao_usu)
inner join ex_forma_documento f on d.id_forma_doc = f.id_forma_doc
where
o.sigla_orgao_usu = 'RJ' and
f.sigla_forma_doc = 'EOF' and
d.ano_emissao = 2013 and
d.num_expediente = 00790;
/*CONSULTAR MARCAS DE UM DOCUMENTO*/
SELECT * FROM CORPORATIVO.CP_MARCA mc INNER JOIN CORPORATIVO.CP_MARCADOR md ON mc.id_marcador = md.id_marcador
WHERE ID_REF IN (
select mob.ID_MOBIL
from
((ex_documento d inner join siga.ex_mobil mob on d.id_doc = mob.id_doc)
inner join corporativo.cp_orgao_usuario o on d.id_orgao_usu = o.id_orgao_usu)
inner join ex_forma_documento f on d.id_forma_doc = f.id_forma_doc
where
o.sigla_orgao_usu = 'RJ'
and f.sigla_forma_doc = 'EOF'
and d.ano_emissao = 2013
and d.num_expediente = 00790
);
SELECT MC.* FROM
CORPORATIVO.CP_MARCA MC INNER JOIN CORPORATIVO.CP_MARCADOR MD ON MD.ID_MARCADOR = MC.ID_MARCADOR
INNER JOIN SIGA.EX_MOBIL MOB ON MC.ID_REF = MOB.ID_MOBIL
INNER JOIN CORPORATIVO.DP_LOTACAO LOT ON MC.ID_LOTACAO_INI = LOT.ID_LOTACAO_INI
INNER JOIN SIGA.EX_DOCUMENTO DOC ON MOB.ID_DOC = DOC.ID_DOC
INNER JOIN SIGA.EX_FORMA_DOCUMENTO FD ON DOC.ID_FORMA_DOC = FD.ID_FORMA_DOC
INNER JOIN SIGA.EX_TIPO_FORMA_DOCUMENTO TFD ON FD.ID_TIPO_FORMA_DOC = tfd.ID_TIPO_FORMA_DOC
WHERE
UPPER(MD.DESCR_MARCADOR) = UPPER('Como Interessado')
AND UPPER(TFD.DESC_TIPO_FORMA_DOC) = UPPER('Processo Administrativo')
AND UPPER(LOT.SIGLA_LOTACAO) = UPPER('05VFEF')
AND LOT.DATA_FIM_LOT IS NULL
AND LOT.ID_ORGAO_USU =1;
=== Quem a pessoa pode substituir === /QUEM A PESSOA PODE SUBSTITUIR/ select p.id_pessoa, p.matricula,p.nome_pessoa,l.id_lotacao, l.sigla_lotacao, s.* from ((dp_substituicao s left join dp_pessoa p on s.id_titular = p.id_pessoa) right join dp_lotacao l on s.id_lota_substituto = l.id_lotacao) where s.id_substituto in (select id_pessoa from dp_pessoa where matricula = 000 and id_orgao_usu = 1 ) ORDER BY id_substituicao;
=== Lista de substitutos da pessoa === /LISTA SUBSTITUTOS/ select p.id_pessoa, p.matricula,p.nome_pessoa,l.id_lotacao, l.sigla_lotacao, s.* from ((dp_substituicao s left join dp_pessoa p on s.id_substituto = p.id_pessoa) right join dp_lotacao l on s.id_lota_substituto = l.id_lotacao) where id_titular in (select id_pessoa from dp_pessoa where matricula = 000 and id_orgao_usu = 1 );
=== Lista de substitutos da LOTAÇÃO === /LISTA SUBSTITUTOS da LOTACAO/ select p.id_pessoa, p.matricula,p.nome_pessoa,l.id_lotacao, l.sigla_lotacao, s.* from ((dp_substituicao s left join dp_pessoa p on s.id_substituto = p.id_pessoa) right join dp_lotacao l on s.id_lota_substituto = l.id_lotacao) where id_lota_titular in (select id_lotacao from dp_lotacao where sigla_lotacao = 'SESIA' and id_orgao_usu = 1 ) ORDER BY ID_SUBSTITUICAO;
=== Incluir permissões de substituição para a última lotação da pessoa (Normalmente utilizado em reestruturação organizacional após a importação do XML) ===
/*PL/SQL PARA INCLUIR AS SUBSTITUICOES*/
/*
*Este código gera os INSERTS necessários dar as permissões de *substituição.
*Nenhuma alteração é feita no banco de dados ao executar este script.
*Defina a variável "dataImportacao" com a data da última importação de *XML realizada.
Descomente os códigos "dbms_output" para gerar as instruções INSERT ou visualizar a lista de pessoas que serão afetadas.
*/
DECLARE
dataImportacao NVARCHAR2(8) := '11/09/12';
TYPE REF_CURSOR IS REF CURSOR;
num_linha number := 1;
PESSOA_ATUAL DP_PESSOA%rowtype;
PESSOA_ANTIGA DP_PESSOA%rowtype;
LOT_ATUAL DP_LOTACAO%rowtype;
LOT_ANTIGA DP_LOTACAO%rowtype;
CURSOR PESSOAS_ALTERADAS_QRY IS
SELECT p.id_pessoa_inicial, count(nome_pessoa),min(id_pessoa) ID_PES_ANT FROM DP_PESSOA p WHERE data_fim_pessoa >= to_date(dataImportacao) and id_orgao_usu = 1 AND MATRICULA IN (
SELECT MATRICULA FROM DP_PESSOA WHERE data_ini_pessoa >= to_date(dataImportacao) and data_fim_pessoa is null and id_orgao_usu = 1
) and matricula in (
select matricula from dp_pessoa where id_lotacao in (
SELECT id_lotacao FROM DP_LOTACAO WHERE data_ini_lot >= to_date(dataImportacao) and id_orgao_usu = 1
) and data_fim_pessoa is null
)
group by p.id_pessoa_inicial
order by p.id_pessoa_inicial;
LOTACAO_ATUAL_QRY REF_CURSOR;
LOTACAO_ANTIGA_QRY REF_CURSOR;
PESSOA_ANTIGA_QRY REF_CURSOR;
PESSOA_ATUAL_QRY REF_CURSOR;
BEGIN
DBMS_OUTPUT.ENABLE(100000);
FOR P_AUT IN PESSOAS_ALTERADAS_QRY LOOP
--dbms_output.put_line( 'ID_PESSOA_ANT: ' || P_AUT.id_pes_ant);
OPEN LOTACAO_ANTIGA_QRY FOR SELECT * FROM DP_LOTACAO WHERE ID_LOTACAO IN (SELECT ID_LOTACAO FROM DP_PESSOA WHERE ID_PESSOA = P_AUT.ID_PES_ANT);
FETCH LOTACAO_ANTIGA_QRY INTO LOT_ANTIGA;
--dbms_output.put_line( 'LOT_ANTIGA.ID_LOTACAO: ' || LOT_ANTIGA.ID_LOTACAO);
OPEN PESSOA_ANTIGA_QRY FOR SELECT * FROM DP_PESSOA WHERE ID_PESSOA = P_AUT.ID_PES_ANT;
fetch PESSOA_ANTIGA_QRY INTO PESSOA_ANTIGA;
--dbms_output.put_line( 'PESSOA_ANTIGA.ID_PESSOA_INICIAL: ' || PESSOA_ANTIGA.ID_PESSOA_INICIAL);
OPEN PESSOA_ATUAL_QRY FOR SELECT * FROM DP_PESSOA WHERE ID_PESSOA_INICIAL = PESSOA_ANTIGA.ID_PESSOA_INICIAL AND DATA_FIM_PESSOA IS NULL ;
FETCH PESSOA_ATUAL_QRY INTO PESSOA_ATUAL;
--dbms_output.put_line( 'NOME_PESSOA: ' || PESSOA_ATUAL.NOME_PESSOA);
OPEN LOTACAO_ATUAL_QRY FOR SELECT * FROM DP_LOTACAO WHERE ID_LOTACAO IN (PESSOA_ATUAL.ID_LOTACAO);
FETCH LOTACAO_ATUAL_QRY INTO LOT_ATUAL;
IF LOT_ATUAL.ID_LOTACAO_INI != lot_antiga.ID_LOTACAO_INI THEN
dbms_output.put_line(num_linha || ' : ' || PESSOA_ATUAL.SESB_PESSOA || PESSOA_ATUAL.MATRICULA || ' (' || PESSOA_ATUAL.SIGLA_PESSOA || ')' || ' SAIU DA ' || LOT_ANTIGA.SIGLA_LOTACAO || ' PARA ' || LOT_ATUAL.SIGLA_LOTACAO || ' - ' || PESSOA_ATUAL.NOME_PESSOA);
--dbms_output.put_line(num_linha || ' : ' || 'INSERT INTO DP_SUBSTITUICAO (ID_SUBSTITUICAO,ID_TITULAR,ID_LOTA_TITULAR,ID_SUBSTITUTO,ID_LOTA_SUBSTITUTO,DT_INI_SUBST,DT_FIM_SUBST,DT_INI_REG,DT_FIM_REG,ID_REG_INI) VALUES (DP_SUBSTITUICAO_SEQ.NEXTVAL,null, ' || LOT_ANTIGA.ID_LOTACAO || ',' || PESSOA_ATUAL.ID_PESSOA || ',' || PESSOA_ATUAL.ID_LOTACAO || ', SYSDATE, ' || 'SYSDATE + 30' || ' ,SYSDATE,null,DP_SUBSTITUICAO_SEQ.CURRVAL);');
--dbms_output.put_line('INSERT INTO DP_SUBSTITUICAO (ID_SUBSTITUICAO,ID_TITULAR,ID_LOTA_TITULAR,ID_SUBSTITUTO,ID_LOTA_SUBSTITUTO,DT_INI_SUBST,DT_FIM_SUBST,DT_INI_REG,DT_FIM_REG,ID_REG_INI) VALUES (DP_SUBSTITUICAO_SEQ.NEXTVAL,null, ' || LOT_ANTIGA.ID_LOTACAO || ',' || PESSOA_ATUAL.ID_PESSOA || ',' || PESSOA_ATUAL.ID_LOTACAO || ', SYSDATE, ' || 'SYSDATE + 30' || ' ,SYSDATE,null,DP_SUBSTITUICAO_SEQ.CURRVAL);');
num_linha :=num_linha +1;
END IF;
CLOSE LOTACAO_ANTIGA_QRY;
CLOSE PESSOA_ANTIGA_QRY;
CLOSE PESSOA_ATUAL_QRY;
END LOOP;
END;
=== Lista as classificações documentais dos modelos === select f.id_forma_doc, descr_forma_doc, id_mod, nm_mod, c.cod_assunto, c.cod_assunto_principal,c.cod_assunto_secundario,c.cod_classe, c.cod_subclasse, c.cod_atividade,v.cod_assunto,v.cod_assunto_principal, v.cod_assunto_secundario,v.cod_classe,v.cod_subclasse,v.cod_atividade from ex_forma_documento f, ex_modelo m, ex_classificacao c, ex_classificacao v where f.id_forma_doc = m.id_forma_doc and m.id_classificacao = c.id_classificacao (+) and m.id_class_criacao_via = v.id_classificacao (+) order by descr_forma_doc,nm_mod;
=== Copiar permissões entre perfis === /PL/SQL PARA COPIAR PERMISSOES DE PERFIL/ /* *Este código copia as permissões de um perfil para outro. 1) Defina a variável modo_escrita para true para gravar no banco. Se false, apenas exibe os inserts que serão executados 2) Defina a variável perfilOrigem com a sigla do perfil que será copiado 3) Defina a variável perfilDestino com a sigla do perfil que receberá as permissões
*/
DECLARE
modo_escrita Boolean := false;
perfilOrigem VARCHAR2(100) := 'LOT_DESENV';
perfilDestino VARCHAR2(100) := 'CopiaPermissao';
tipo_config VARCHAR2(100) := 'Utilizar Serviço';
perfil_ori_inexistente EXCEPTION;
perfil_dest_inexistente EXCEPTION;
TYPE REF_CURSOR IS REF CURSOR;
num_linha number := 1;
PERFIL_ORI CP_GRUPO%rowtype;
PERFIL_DEST CP_GRUPO%rowtype;
CURSOR CONFIG_ORIGINAL_QRY IS
SELECT * FROM CP_CONFIGURACAO WHERE ID_GRUPO IN (select ID_GRUPO from cp_grupo where sigla_grupo = perfilOrigem) and id_tp_configuracao in (select id_tp_configuracao from cp_tipo_configuracao where dsc_tp_configuracao = tipo_config);
PERFIL_QRY REF_CURSOR;
BEGIN
DBMS_OUTPUT.ENABLE(900000);
OPEN PERFIL_QRY FOR select * from cp_grupo where sigla_grupo = perfilDestino;
FETCH PERFIL_QRY INTO PERFIL_DEST;
OPEN PERFIL_QRY FOR select * from cp_grupo where sigla_grupo = perfilOrigem;
FETCH PERFIL_QRY INTO perfil_ori;
if perfil_ori.ID_GRUPO is null
then
raise perfil_ori_inexistente;
end if;
if PERFIL_DEST.ID_GRUPO is null
then
raise perfil_dest_inexistente;
end if;
dbms_output.put_line('Copiando permissões para ' || PERFIL_DEST.SIGLA_GRUPO || '(' || PERFIL_DEST.ID_GRUPO|| ')...');
FOR CONF_ORI IN CONFIG_ORIGINAL_QRY LOOP
if (modo_escrita)
then
Insert into CP_CONFIGURACAO (ID_CONFIGURACAO,DT_INI_VIG_CONFIGURACAO,DT_FIM_VIG_CONFIGURACAO,DT_INI_REG,ID_ORGAO_USU,ID_LOTACAO,ID_CARGO,ID_FUNCAO_CONFIANCA,ID_PESSOA,ID_SIT_CONFIGURACAO,ID_TP_CONFIGURACAO,ID_SERVICO,ID_GRUPO,NM_EMAIL,DESC_FORMULA,ID_TP_LOTACAO,ID_IDENTIDADE,HIS_IDC_INI,HIS_IDC_FIM) values (CP_CONFIGURACAO_SEQ.NEXTVAL,CONF_ORI.DT_INI_VIG_CONFIGURACAO,CONF_ORI.DT_FIM_VIG_CONFIGURACAO,CONF_ORI.DT_INI_REG,CONF_ORI.ID_ORGAO_USU,CONF_ORI.ID_LOTACAO,CONF_ORI.ID_CARGO,CONF_ORI.ID_FUNCAO_CONFIANCA,CONF_ORI.ID_PESSOA,CONF_ORI.ID_SIT_CONFIGURACAO,CONF_ORI.ID_TP_CONFIGURACAO,CONF_ORI.ID_SERVICO,PERFIL_DEST.ID_GRUPO,CONF_ORI.NM_EMAIL,CONF_ORI.DESC_FORMULA,CONF_ORI.ID_TP_LOTACAO,CONF_ORI.ID_IDENTIDADE,CONF_ORI.HIS_IDC_INI,CONF_ORI.HIS_IDC_FIM);
else
dbms_output.put_line(num_linha || ': Insert into CP_CONFIGURACAO (ID_CONFIGURACAO,DT_INI_VIG_CONFIGURACAO,DT_FIM_VIG_CONFIGURACAO,DT_INI_REG,ID_ORGAO_USU,ID_LOTACAO,ID_CARGO,ID_FUNCAO_CONFIANCA,ID_PESSOA,ID_SIT_CONFIGURACAO,ID_TP_CONFIGURACAO,ID_SERVICO,ID_GRUPO,NM_EMAIL,DESC_FORMULA,ID_TP_LOTACAO,ID_IDENTIDADE,HIS_IDC_INI,HIS_IDC_FIM) values (DP_CONFIGURACAO_SEQ.NEXTVAL,' || nvl(to_char(CONF_ORI.DT_INI_VIG_CONFIGURACAO),'null') || ',' || nvl(to_char(CONF_ORI.DT_FIM_VIG_CONFIGURACAO),'null') || ',' || nvl(to_char(CONF_ORI.DT_INI_REG),'null') || ',' || nvl(to_char(CONF_ORI.ID_ORGAO_USU),'null') || ',' || nvl(to_char(CONF_ORI.ID_LOTACAO),'null') || ',' || nvl(to_char(CONF_ORI.ID_CARGO),'null') || ',' || nvl(to_char(CONF_ORI.ID_FUNCAO_CONFIANCA),'null') || ',' || nvl(to_char(CONF_ORI.ID_PESSOA),'null') || ',' || nvl(to_char(CONF_ORI.ID_SIT_CONFIGURACAO),'null') || ',' || nvl(to_char(CONF_ORI.ID_TP_CONFIGURACAO),'null') || ',' || nvl(to_char(CONF_ORI.ID_SERVICO),'null') || ',' || nvl(to_char(PERFIL_DEST.ID_GRUPO),'null') || ',' || nvl(to_char(CONF_ORI.NM_EMAIL),'null') || ',' || nvl(to_char(CONF_ORI.DESC_FORMULA),'null') || ',' || nvl(to_char(CONF_ORI.ID_TP_LOTACAO),'null') || ',' || nvl(to_char(CONF_ORI.ID_IDENTIDADE),'null') || ',' || nvl(to_char(CONF_ORI.HIS_IDC_INI),'null') || ',' || nvl(to_char(CONF_ORI.HIS_IDC_FIM),'null'));
end if;
num_linha :=num_linha +1;
END LOOP;
CLOSE PERFIL_QRY;
commit;
EXCEPTION
WHEN perfil_ori_inexistente
THEN
DBMS_OUTPUT.PUT_LINE ('ERRO: Perfil de origem inexistente: ' || perfilOrigem);
WHEN perfil_dest_inexistente
THEN
DBMS_OUTPUT.PUT_LINE ('ERRO: Perfil destino inexistente: ' || perfilDestino);
END;
/*LISTA AS PESSOAS NA LOTAÇÃO IMEDIATAMENTE INFERIOR*/
select l.sigla_lotacao, p.matricula,p.nome_pessoa from dp_lotacao l left join dp_pessoa p on p.id_lotacao=l.id_lotacao where data_fim_lot is null and id_lotacao_pai in (select id_lotacao from dp_lotacao where sigla_lotacao = 'CSIS' and data_fim_lot is null) and p.data_fim_pessoa is null;
/*LISTA A SITUAÇÃO FUNCIONAL POR CARGO*/
select p.nome_pessoa,cg.nome_cargo, p.situacao_funcional_pessoa, s.dsc_sit_funcional
from (dp_pessoa p inner join dp_cargo cg on p.id_cargo = cg.id_cargo) inner join cad_sit_funcional s on s.id_cad_sit_funcional = p.situacao_funcional_pessoa
where cg.nome_cargo like 'JUIZ%' and p.data_fim_pessoa is null and p.id_orgao_usu = 1 and p.situacao_funcional_pessoa != 1 order by s.dsc_sit_funcional;
select id_mod,dbms_lob.getlength(conteudo_blob_mod) from ex_modelo where conteudo_blob_mod is not null order by dbms_lob.getlength(conteudo_blob_mod) desc;
/*LISTAR TAREFAS DE UMA LOTACAO*/
SELECT pa.id_,pa.actorid_, ti.*
FROM
JBPM_TASKINSTANCE ti, JBPM_POOLEDACTOR pa, JBPM_TASKACTORPOOL tap
WHERE
tap.taskinstance_ = ti.id_
and tap.pooledactor_ = pa.id_
and ti.end_ is null
and pa.actorid_ = 'RJ<SIGLA_LOTACAO>'
order by ti.id_
;
/*TRANSFERIR TAREFAS DE UMA LOTAÇÃO PARA OUTRA*/
UPDATE JBPM_POOLEDACTOR
SET actorid_ = 'RJ<SIGLA_LOTACAO_DESTINO>'
WHERE id_ IN (SELECT pa.id_ FROM JBPM_TASKINSTANCE ti, JBPM_POOLEDACTOR pa, JBPM_TASKACTORPOOL tap WHERE tap.taskinstance_ = ti.id_ and tap.pooledactor_ = pa.id_ and ti.end_ is null and
pa.actorid_ = 'RJ<SIGLA_LOTACAO_ORIGEM>');
UPDATE jbpm_variableinstance SET STRINGVALUE_ = 'RJCMAS' where stringvalue_ = 'RJCMAG' AND name_ = '_doc_perfil_fiscal_adm';
select distinct PA.ID_,pa.ACTORID_ from
jbpm_variableinstance vi,
jbpm_taskinstance ti,
jbpm_taskactorpool tap,
jbpm_pooledactor pa
where
vi.stringvalue_ like '%EOF-2013/00856.01%'
and ti.procinst_ = vi.processinstance_
and tap.taskinstance_ = ti.id_
and pa.id_ = tap.pooledactor_
and ti.end_ is null;
SELECT * FROM all_constraints WHERE constraint_name = 'SYS_xxxxxxx';
set define off;
Query SQL para listar o tamanho do campo que contém os níveis de acesso desnormalizado de um documento
select length(dnm_acesso), doc.* from siga.ex_documento doc where dnm_acesso is not null order by length(dnm_acesso) desc ;
/*REMOVE OS DOCUMENTOS JÁ CRIADOS*/
SET DEFINE OFF
ALTER TRIGGER SIGA.EX_DOCUMENTO_BLOCK DISABLE;
UPDATE SIGA.EX_DOCUMENTO SET ID_MOB_AUTUADO = NULL;
UPDATE SIGA.EX_DOCUMENTO SET ID_MOB_PAI = NULL;
DELETE FROM SIGA.EX_BOLETIM_DOC;
DELETE FROM SIGA.EX_MOVIMENTACAO;
DELETE FROM SIGA.EX_MOBIL;
DELETE FROM SIGA.EX_DOCUMENTO;
DROP SEQUENCE SIGA.EX_DOCUMENTO_SEQ;
CREATE SEQUENCE SIGA.EX_DOCUMENTO_SEQ MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
ALTER TRIGGER SIGA.EX_DOCUMENTO_BLOCK ENABLE;
select *
from corporativo.dp_lotacao
connect by prior dp_lotacao.id_lotacao = ID_LOTACAO_PAI
start with id_lotacao_pai = 19499
union select * from corporativo.dp_lotacao where id_lotacao = 19499;
select (select acronimo_orgao_usu from cp_orgao_usuario o where o.id_orgao_usu = d.id_orgao_usu) nome, count(*) from cp_identidade d where d.his_dt_fim is null group by id_orgao_usu
select (select acronimo_orgao_usu from cp_orgao_usuario o where o.id_orgao_usu = d.id_orgao_usu) nome, count(*) from ex_documento d group by id_orgao_usu
select acronimo_orgao_usu, count(*) from ex_documento d, ex_mobil b, ex_movimentacao m, cp_orgao_usuario o where o.id_orgao_usu = d.id_orgao_usu and b.id_doc = d.id_doc and m.id_mobil = b.id_mobil and conteudo_tp_mov = 'application/zip' group by o.id_orgao_usu, o.acronimo_orgao_usu
select acronimo_orgao_usu, count(*) from ex_documento d, ex_mobil b, ex_movimentacao m, cp_orgao_usuario o where o.id_orgao_usu = d.id_orgao_usu and b.id_doc = d.id_doc and m.id_mobil = b.id_mobil and conteudo_tp_mov = 'application/zip' group by o.id_orgao_usu, o.acronimo_orgao_usu
select to_char(DT_REG_DOC,'yyyy'), count(id_doc) from ex_documento group by to_char(DT_REG_DOC,'yyyy') order by to_char(DT_REG_DOC,'yyyy');
select to_char(DT_INI_MOV,'yyyy'), count(id_mov) from ex_movimentacao where conteudo_tp_mov = 'application/zip' or conteudo_tp_mov = 'application/pdf' group by to_char(DT_INI_MOV,'yyyy') order by to_char(DT_INI_MOV,'yyyy');