Skip to content
Markenson edited this page Aug 25, 2016 · 7 revisions

Resumo de SQLs úteis.

Introdução

Este documento reúne instruções SQL que podem ser úteis na manutenção do SIGA.

SQLs

=== 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;

Consultar movimentações de um documento

/*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

/*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

/*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
			);

Consultar marcas de uma lotação por marcador

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;

Pessoas nas lotações imediatamente inferiores

/*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;

Situação Funcional das pessoas

/*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;

Verificar o tamanho dos modelos

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;

SIGA-WF

Listar tarefas de uma lotação

/*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

/*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>');

CORRIGIR FISCAL ADMINISTRATIVO

UPDATE jbpm_variableinstance SET STRINGVALUE_ = 'RJCMAS' where stringvalue_ = 'RJCMAG' AND  name_ = '_doc_perfil_fiscal_adm';

VERIFICAR QUEM ESTÁ NO POOL POR DOCUMENTO

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;

Consultas gerais

Exibir uma constraint

SELECT * FROM all_constraints WHERE constraint_name = 'SYS_xxxxxxx';

Desativar substituição de variável no SQL developer

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 ;

Script para limpar os documentos

/*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;

Selecionar todas as lotações na hierarquia

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;

Estatísticas

Gerais

Total de Usuários por Órgão:

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

Siga-Doc

Total de Documentos por Órgão:

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

Total de Movimentações Contendo Zips por Órgão:

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

Total de Movimentações Contendo Pdfs por Órgão:

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

Documentos novos por ano

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');

Movimentações contendo documentos por ano

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');
Clone this wiki locally