Pular para o conteúdo
Visualizando 12 posts - 16 até 27 (de 27 do total)
  • Autor
    Posts
  • #91669
    sancler
    Participante

      Ops, desculpa ai pessoal!

      uma forma mais objetiva de resolver o problema seria simplesmente concatenar o ‘V_’ com as colunas dentro de substr()

      substr(‘V_’||colunaTabelaNãoAuditada 1, 30)

      Ai sim ficaria melhorzinho…

      Vlw.

      #91682
      gsmdf
      Participante

        [quote=”sancler”:2dibgivz]Ops, desculpa ai pessoal!

        uma forma mais objetiva de resolver o problema seria simplesmente concatenar o ‘V_’ com as colunas dentro de substr()

        substr(‘V_’||colunaTabelaNãoAuditada 1, 30)

        Ai sim ficaria melhorzinho…

        Vlw.[/quote]

        Mas ai não levaria em conta os campos N_nomeColunaPK. Pois quando o campo é PK na tabela auditoria tem que haver N_nomeColuna e V_nomeColuna.

        O select funcionando mas não tratando os casos que trunca o campo tá assim:


        (select t1.table_name, 'N_' || t1.column_name as COLUNAS_FALTANTES
        from DBA_CONS_COLUMNS t1 join DBA_CONSTRAINTS t2
        on t1.constraint_name = t2.constraint_name
        and t1.owner = t2.owner
        and t1.table_name = t2.table_name
        and t1.owner = 'Owner'
        and t2.constraint_type = 'P'
        union all
        select table_name, 'V_' || column_name
        from DBA_TAB_COLUMNS
        where owner = 'Owner')
        minus
        select table_name, column_name
        from dba_tab_columns
        where owner = 'OwnerAuditoria'

        Tentei jogar substr(1,28) nas column_name do Owner e (3,30) no column_name do ownerAuditoria mas não deu certo…

        #91684
        sancler
        Participante

          gsmdf

          continuei contatenando da forma que eu coloquei no último post, mas use a função substr(3,30) nas duas tabelas.

          posta ai se resolveu ou não blz?

          Att,

          #91685
          gsmdf
          Participante


            (select t1.table_name, 'N_' || substr(t1.column_name,3,30) as COLUNAS_FALTANTES
            from DBA_CONS_COLUMNS t1 join DBA_CONSTRAINTS t2
            on t1.constraint_name = t2.constraint_name
            and t1.owner = t2.owner
            and t1.table_name = t2.table_name
            and t1.owner = 'TCU'
            and t2.constraint_type = 'P'
            union all
            select table_name, substr('V_' || column_name,3,30)
            from DBA_TAB_COLUMNS
            where owner = 'TCU')
            minus
            select table_name, substr(column_name,3,30)
            from dba_tab_columns
            where owner = 'AUDIT_TCU'

            Coloquei 3,30 nas 3 column_name e não deu.

            #91686
            sancler
            Participante

              Tira o substr() dessa parte do código
              minus
              select table_name, column_name
              from dba_tab_columns
              where owner = ‘AUDIT_TCU’

              #91687
              burga
              Participante

                Na verdade o erro está na primeira substr…
                Está assim:
                ‘N_’ || substr(t1.column_name,3,30)

                enquanto devia estar assim:

                substr(‘N_’ || t1.column_name,3,30)

                Mas o mais correto eu acredito que seria com substr iniciando no primeiro caracter e não no terceiro, pra contar as pks da auditoria…

                #91688
                gsmdf
                Participante

                  [quote=”burga”:cc3hwbrl]Na verdade o erro está na primeira substr…
                  Está assim:
                  ‘N_’ || substr(t1.column_name,3,30)

                  enquanto devia estar assim:

                  substr(‘N_’ || t1.column_name,3,30)

                  Mas o mais correto eu acredito que seria com substr iniciando no primeiro caracter e não no terceiro, pra contar as pks da auditoria…[/quote]

                  Realmente isto estava errado, agora consertei:


                  (select t1.table_name, substr('N_' || t1.column_name,3,30) as COLUNAS_FALTANTES
                  from DBA_CONS_COLUMNS t1 join DBA_CONSTRAINTS t2
                  on t1.constraint_name = t2.constraint_name
                  and t1.owner = t2.owner
                  and t1.table_name = t2.table_name
                  and t1.owner = 'TCU'
                  and t2.constraint_type = 'P'
                  union all
                  select table_name, substr('V_' || column_name,3,30)
                  from DBA_TAB_COLUMNS
                  where owner = 'TCU')
                  minus
                  select table_name, substr(column_name,3,30)
                  from dba_tab_columns
                  where owner = 'AUDIT_TCU'

                  Porém a primeira instancia que retorna já está errada:

                  No owner TCU há a coluna COD_MEMBRO_MINISTERIO_PUBLICO.
                  Ai no owner AUDIT a coluna vira V_COD_MEMBRO_MINISTERIO_PUBLIC.

                  E o select está retornando como coluna faltante COD_MEMBRO_MINISTERIO_PUBLICO.

                  #91689
                  sancler
                  Participante

                    gsmdf

                    Tira a função substr logo depois do minus.

                    Acho que vai funcionar.

                    #91691
                    gsmdf
                    Participante

                      [quote=”sancler”:1ua2y9am]gsmdf

                      Tira a função substr logo depois do minus.

                      Acho que vai funcionar.[/quote]

                      Não funciona pq ai por exemplo no caso citado acima sem o substr ali das tabelas de auditoria vai retornar V_COD_MEMBRO_MINISTERIO_PUBLIC que não vai bater com os dois primeiros selects que estão pegando 30 caracteres a partir do 3º (tirando assim o prefixo V_ ou N_).

                      #91692
                      sancler
                      Participante

                        então vc vai ter que concatenar outra vez, assim como fez, assim como fez nessa parte do select
                        substr(‘N_’ || t1.column_name,3,30) as COLUNAS_FALTANTES

                        Tenta ai e posta o resultado.

                        #91698
                        burga
                        Participante

                          como eu destaquei no post anterior, em todas as funções substr, coloque 1 no segundo parâmetro que funciona…

                          Ou se for deixar iniciando em 3, deixe com 28 no terceiro parâmetro!!!!

                          #91701
                          gsmdf
                          Participante

                            [quote=”sancler”:6n09iwez]então vc vai ter que concatenar outra vez, assim como fez, assim como fez nessa parte do select
                            substr(‘N_’ || t1.column_name,3,30) as COLUNAS_FALTANTES

                            Tenta ai e posta o resultado.[/quote]

                            Mas eu não entendo como concatenar com N_ ou V_ vai ajudar na parte do minus, na tabela de auditoria se as colunas nesta tabela já tem no nome delas N_ ou V_. O resultado seria N_N_nomeColuna ou V_V_nomeColuna não ?

                          Visualizando 12 posts - 16 até 27 (de 27 do total)
                          • Você deve fazer login para responder a este tópico.