Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #78919
    marcelomirandola
    Participante

      Pessoal, tentei fazer um select com uma tabela que retorna de uma sub-consulta como segue:

      SELECT * FROM (SELECT TABLE_NAME FROM USER_TABLES WHERE UPPER(TABLE_NAME) LIKE ‘ALUNO’)

      Eu esperava o retorno dos dados da tabela ALUNO, mas o retorno foi apenas o próprio nome da tabela.

      Alguém sabe o que eu devo fazer para que o nome da tabela seja transformado em um objeto table para que a clausula FROM a reconheça?

      Valeu.
      Marcelo.

      #78920
      chduarte
      Participante

        Nao é possivel. Mas nao é mais facil simplismente fazer o select na tabela?

        []

        #78921
        marcelomirandola
        Participante

          Obrigado chduarte, é que estou desenvolvendo um projeto que este recurso me ajudaria. Infelizmente não fosso dar detalhes.

          Valeu.

          #78924
          CJones
          Participante

            Na sua sub-consulta voce pede como retorno apenas o TABLE_NAME, por isso a consulta só retornará o nome da tabela. Se voce pedir * por exemplo como retorno a consulta retornará todos os dados da tabela.

            #78925
            itiburski
            Participante

              Dependendo da linguagem que voce utilizar, voce pode fazer duas consultas distintas: uma obtem o nome da tabela e a outra recupera os dados dessa tabela. Não fica muito performático, mas acho que resolve o seu problema.

              #78996
              Avatar photoLeonardo Litz
              Participante

                OLÁ COLEGA, ESTA SERIA UMA FORMA DE SE FAZER.
                TALVEZ NÃO SEJA A FORMA MAIS SIMPLES.
                MAS TB FUNCIONA.

                DECLARE

                VALORES DBMS_SQL.Varchar2_Table;
                VSQL VARCHAR2(500);

                BEGIN

                FOR DD IN (select *
                from all_all_tables t
                where t.owner = user
                and t.table_name like ‘SAUCADS_102%’) LOOP

                VSQL := 'SELECT *
                          FROM '||DD.TABLE_NAME;
                

                EXECUTE IMMEDIATE vsql BULK COLLECT
                INTO valores;

                     FOR NN IN 1..VALORES.COUNT LOOP
                
                     DBMS_OUTPUT.put_line(VALORES(NN)); 
                
                     END LOOP;      
                
                 END LOOP;
                

                END;

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