Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #106928
    Micael
    Participante

      Olá pessoal!!
      Eu estou passando por um problema com o banco de dados ORACLE, estava sendo utilizado o ORA11 e atualizei para a última versão passando de ORA11 para ORA12, porém um SQL que estava sendo utilizado na aplicação simplesmente parou de funcionar, lembrando que este SQL está na aplicação por mais de um ano e só passou a dar problema após a atualização para a última versão do ORACLE, o problema que está ocorrendo é que ele não retorna nenhum valor na consulta e deveria retornar, este mesmo SQL funciona em base ORA11, até porque estava sendo utilizado a mesma base de dados em ORA11 e funcionava perfeitamente após a atualização para o ORA12 passou a não retornar nada, não sei porque isto acontece e gostaria de entender porque esta consulta parou de funcionar com a atualização e se alguém teve algum problema parecido, segue a baixo o SQL que estou utilizando:
      [CODE]
      Select
      RELAT.CODIGO,
      RELAT.DESCRICAO
      FROM
      RELAT,
      PROGR
      WHERE
      RELAT.RELATORIO = ‘01’ And
      RELAT.PROGRAMA = PROGR.PROGRAMA And
      ( ( RELAT.TABAUX Is Null ) Or
      Exists (
      Select
      TABA.TABAUX
      From
      TABA
      Where
      RELAT.TABA = TABA.TABA
      )
      )
      [/CODE]

      #106931
      rman
      Participante

        @Micael

        Remova as condições do WHERE um por um até achar qual condição está restringindo.

        #106934
        Micael
        Participante

          O problema esta na estrutura do Exists, fiz um teste e funcionou e solucionou por hora o problema na aplicação, porém não me serve, usei isto: [CODE]alter session set optimizer_features_enable=”11.1.0.6″;[/CODE], ou seja, agora ele esta rodando o ORA12 com o optimizador do ORA11 desta forma minha consulta voltou a funcionar, mas preciso que ele rode inteiro no ORA12, ou seja, com o optmizador do ORA12, mas não entendo o porque não funciona.

          #106936
          rman
          Participante

            @Micael

            Verifique se essa consulta é correspondente.


            SELECT
            R.CODIGO,
            R.DESCRICAO
            FROM
            RELAT R
            INNER JOIN PROGR P ON P.PROGRAMA = R.PROGRAMA
            INNER JOIN TAB T ON T.TABA = R.TABA OR R.TABAUX IS NULL
            WHERE R.RELATORIO = '01'

            Realmente eu não entendi esse OR com EXISTS. :blink:

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