Pular para o conteúdo
  • Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 4 meses atrás por jspaulonci.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #95771
    airoosp
    Participante

      Boa tarde,

      Estou desenvolvendo uma procedure para executar o truncate de várias tabelas só que é necessário saber em quais constraints as tabelas são mencionadas.
      Sendo assim, criei cursores para utilizar o processo pesquisando dados na dba_constraints e all_constraints. O problema é que o cursor que utiliza a all_constraints não retorna informações quando é colocada a claúsula WHERE, sem esta claúsula funciona corretamente.
      Alguém sabe se há algum problema em utilizar a “all_constraint” em procedure com cursor? Banco 9i.

      Cursor Lista_Constraints_Primaria (p_OwnerTabela in varchar2, p_Tabela in varchar2) is

      select owner, constraint_name, table_name
      from all_constraints
      where r_constraint_name = (select constraint_name
      from all_constraints
      where table_name = p_Tabela
      and constraint_type = ‘P’)

      and owner = p_OwnerTabela;

      .
      .
      .

      open Lista_Constraints_Primaria(x.owner, x.table_name);
      loop
      fetch Lista_Constraints_Primaria into v_owner_p, v_nome_tabela_p, v_nome_constraint_p;
      exit when Lista_Constraints_Primaria%NOTFOUND;

      .
      .
      .

      Obrigado.

      Airton

      #95779
      burga
      Participante

        põe o r_owner também só pra garantir que a subquery não retorne mais de um registro…

        Os parâmetros que você está passando pro cursor estão em maiúsculo? seria bom colocar uns UPPERs no cursor só pra garantir também…

        #95782
        airoosp
        Participante

          O problema é que a query não retorna informação, fiz o teste com upper e também não funcionou. A query esta sendo executada com o usuário system.

          #95784
          burga
          Participante

            Você tem certeza de que a tabela que você está consultando possui tabelas com FKs que apontam pra ela?

            #95790
            jspaulonci
            Participante

              Saudações airoosp

              Tenha em mente o seguinte conceito, todos os objetos iniciados com ALL_*, mostrará somente informações referente ao que o owner possui acesso.

              Se eu fosse você não usaria a ALL_* e sim a DBA_

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress