SET SERVEROUTPUT ON
DECLARE
  v_id_atributo_aplicacao       NUMBER;
  v_id_valor_atributo           NUMBER;
BEGIN
  -- inserir na tabela SEQ_SRVCFG_ATRIBUTO_APLICACAO o 2o atributo, que é instancia
  FOR reg IN ( SELECT 'INSTANCIA' AS nome_atributo_aplicacao
                    , id_tipo_aplicacao
                    , nome_tipo_aplicacao
                FROM srvcfg_tipo_aplicacao
               WHERE nome_tipo_aplicacao IN( 'LINX-STOREX-EP', 'LINX-STOREX-PROCTRANS' )
              MINUS
              SELECT atr.nome_atributo_aplicacao
                   , atr.id_tipo_aplicacao
                   , taplic.nome_tipo_aplicacao
                FROM srvcfg_atributo_aplicacao atr 
                JOIN srvcfg_tipo_aplicacao taplic ON atr.id_tipo_aplicacao = taplic.id_tipo_aplicacao
               WHERE taplic.nome_tipo_aplicacao IN ('LINX-STOREX-EP', 'LINX-STOREX-PROCTRANS' )
            )
  LOOP
    SELECT seq_srvcfg_atributo_aplicacao.NEXTVAL
      INTO v_id_atributo_aplicacao
      FROM DUAL;
    BEGIN
       INSERT INTO srvcfg_atributo_aplicacao ( id_atributo_aplicacao, cod_versao, nome_atributo_aplicacao, id_tipo_aplicacao)
            VALUES ( v_id_atributo_aplicacao, 0, reg.nome_atributo_aplicacao, reg.id_tipo_aplicacao);
       DBMS_OUTPUT.put_line('Cadastrado atributo ['|| v_id_atributo_aplicacao || '-' || reg.nome_atributo_aplicacao || '] para a aplicação [' || reg.nome_tipo_aplicacao || ']' );
    EXCEPTION 
       WHEN OTHERS THEN
          NULL;
    END;

  END LOOP;

  -- inserir na lista de atributos, o 2o atributo com valor
  FOR reg IN ( SELECT 'INSTANCIA' nome_atributo_aplicacao
                    , '1' val_atributo
                    , vatrib.id_aplicacao
                    , atr_inst.id_atributo_aplicacao
                FROM srvcfg_valor_atributo vatrib 
                JOIN srvcfg_atributo_aplicacao atr ON vatrib.id_atributo_aplicacao = atr.id_atributo_aplicacao
                JOIN srvcfg_tipo_aplicacao taplic ON atr.id_tipo_aplicacao = taplic.id_tipo_aplicacao
                JOIN srvcfg_atributo_aplicacao atr_inst ON atr.id_tipo_aplicacao = atr_inst.id_tipo_aplicacao
               WHERE taplic.nome_tipo_aplicacao IN( 'LINX-STOREX-EP', 'LINX-STOREX-PROCTRANS' )
                 AND atr.nome_atributo_aplicacao = 'EMPRESA'
                 AND atr_inst.nome_atributo_aplicacao = 'INSTANCIA'
              MINUS
              SELECT atr.nome_atributo_aplicacao
                   , vatrib.val_atributo
                   , vatrib.id_aplicacao
                   , vatrib.id_atributo_aplicacao
                FROM srvcfg_valor_atributo vatrib 
                JOIN srvcfg_atributo_aplicacao atr ON vatrib.id_atributo_aplicacao = atr.id_atributo_aplicacao
                JOIN srvcfg_tipo_aplicacao taplic ON atr.id_tipo_aplicacao = taplic.id_tipo_aplicacao
               WHERE taplic.nome_tipo_aplicacao IN ( 'LINX-STOREX-EP', 'LINX-STOREX-PROCTRANS' )
                 AND atr.nome_atributo_aplicacao = 'INSTANCIA' )
  LOOP
    SELECT seq_srvcfg_valor_atributo.NEXTVAL
      INTO v_id_valor_atributo
      FROM DUAL;
    BEGIN
      INSERT INTO srvcfg_valor_atributo ( id_valor_atributo, cod_versao, val_atributo, id_aplicacao, id_atributo_aplicacao )
           VALUES ( v_id_valor_atributo, 0, reg.val_atributo, reg.id_aplicacao, reg.id_atributo_aplicacao);
      DBMS_OUTPUT.put_line(    'Cadastrado valor do atributo [' || v_id_valor_atributo|| '] para o atributo ['|| reg.id_atributo_aplicacao|| '] na aplicação ['|| reg.id_aplicacao|| ']' );
    EXCEPTION
      WHEN OTHERS THEN
         NULL;
    END;

  END LOOP;
END;
/

-- Para validar
/*
SELECT atr.*
     , taplic.nome_tipo_aplicacao
  FROM srvcfg_atributo_aplicacao atr 
  JOIN srvcfg_tipo_aplicacao taplic ON atr.id_tipo_aplicacao = taplic.id_tipo_aplicacao
 WHERE taplic.nome_tipo_aplicacao IN( 'LINX-STOREX-EP', 'LINX-STOREX-PROCTRANS' )
   AND atr.nome_atributo_aplicacao = 'INSTANCIA';

SELECT vatrib.id_valor_atributo
     , vatrib.cod_versao
     , vatrib.val_atributo
     , vatrib.id_aplicacao
     , vatrib.id_atributo_aplicacao
  FROM srvcfg_valor_atributo vatrib 
  JOIN srvcfg_atributo_aplicacao atr ON vatrib.id_atributo_aplicacao = atr.id_atributo_aplicacao
  JOIN srvcfg_tipo_aplicacao taplic ON atr.id_tipo_aplicacao = taplic.id_tipo_aplicacao
 WHERE taplic.nome_tipo_aplicacao IN ( 'LINX-STOREX-EP', 'LINX-STOREX-PROCTRANS' )
   AND atr.nome_atributo_aplicacao = 'INSTANCIA';
*/