Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #100217
    drigo
    Participante

      Olaa,

      Criei uma View conforme mostrada abaixo:

      CREATE VIEW clienteTeste AS
      SELECT cliente_id id, upper(cliente_name) name FROM clientes;

      Logo após tentei realizar o respectivo INSERT, conforme mostrado abaixo:

      INSERT INTO clienteTeste (id,name) VALUES(100,'Mario');

      E o seguinte ERRO foi mostrado:

      SQL Error: ORA-01733: virtual column not allowed here

      Realizei uma pesquisa e descobri que o uso da função UPPER() teria causado esse problema, mas porque ? qual a justificativa teórica para tal problema ?

      Desde Já, Agradeço.

      #100218
      eversonpiza
      Participante

        Olá amigo,
        blz?

        Ao usar a função upper na view, a coluna cliente_name deixou de existir na view e foi criada uma coluna virtual, resultado de uma função, e vc não consegue fazer insert em colunas virtuais.

        Tudo bem, o Oracle poderia ser esperto suficiente para ver q a coluna é a mesma e vc não mudou nada nela, mas ele segue essa regra para todas funções usadas, sem verificar como foi usada.

        Por exemplo: imagina que vc tivesse usada algo do tipo UPPER(colunaA || colunaB), o oracle não teria como saber em qual coluna inserir por ter usado duas.

        []’s

        #100230
        drigo
        Participante

          Olaa,

          Tudo bom. Minha dúvida foi sanada, muito obrigado pela atenção.

          Grande Abraço.

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