AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 29177
Accepted
kevinskio
kevinskio
Asked: 2012-11-24 06:13:31 +0800 CST2012-11-24 06:13:31 +0800 CST 2012-11-24 06:13:31 +0800 CST

Forçar a precisão do número em uma exibição com União

  • 772

Estou usando Entity Framework e Oracle. O ODAC da Oracle parece ter um bug conhecido em que os dados do tipo NUMBER são convertidos para Int64 pelo Entity Framework. Eu pensei que uma visão me ajudaria, mas

CREATE OR REPLACE VIEW test as
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual
union
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual

Quando você olha para a exibição, o tipo de dados é Número sem precisão para todos eles. Isso parece ser uma consequência da UNIÃO como apenas

CREATE OR REPLACE VIEW test as
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual

produz NUMBER, NUMBER(1), NUMBER como os tipos de dados

Existe uma solução alternativa para forçar o Oracle a derivar uma precisão em uma visão com um UNION?

Editar: @Phil pergunta qual é o resultado desejado. Ele está certo de que o Entity Framework precisa ter uma precisão para trabalhar, portanto, o tipo de dados desejado da amostra acima seria NUMBER (1)

Editar: @Phil para esta versão Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Produção no Windows de 32 bits, uma visualização com uma união fornece uma visualização que possui NUMBER sem precisão. Entity Framework interpreta isso como int 64.

Estou procurando uma solução que mostre os NÚMEROS com uma precisão que o Entity Framework possa entender como um inteiro de 32 bits. Qualquer precisão de NUMBER(1) a NUMBER (9) faz o trabalho.

oracle oracle-11g-r2
  • 1 1 respostas
  • 2529 Views

1 respostas

  • Voted
  1. Best Answer
    a1ex07
    2012-11-24T10:55:33+08:002012-11-24T10:55:33+08:00

    Se você diz

    CREATE OR REPLACE VIEW test as 
    select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual
    

    dá o que você quer, por que não usar o mesmo para união:

    CREATE OR REPLACE VIEW test_v11 as
    SELECT ONE, CAST(TWO AS NUMBER(1)) AS TWO, CAST(THREE AS INT) AS THREE
    FROM 
    (
     SELECT 1 AS ONE ,2 AS TWO ,3 AS THREE FROM dual
      UNION
     SELECT 1 AS ONE ,2 AS TWO ,3 AS THREE FROM dual
     )a
    
    • 2

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve