【问题标题】:Oracle XE + ODP.NET ANNOYING VIEW ERROROracle XE + ODP.NET 恼人的视图错误
【发布时间】:2010-05-07 04:24:47
【问题描述】:

伙计们,这是我的观点:

CREATE OR REPLACE VIEW SISTEMA.VWTELA AS
SELECT
TEL_DLTELA AS Tela,
TEL_DLDESCRICAO As Descricao,
TEL_DLTABELA As Tabela,
CASE WHEN to_char(TEL_STATIVO) = to_char(1) THEN 
  to_char('Yes')
  ELSE
    to_char('No')
    END as Ativo,
TEL_IDTELA AS IDTEL
FROM SISTEMA.TEL_TELA;

当我执行 SELECT * FROM SISTEMA.VWTELA 时,它在 PL/SQL Developer 中运行良好,但是当我从我的 VB.NET 应用程序启动查询时,它会抛出一个非常烦人的错误 ORA-01722。

有什么想法吗?应用程序代码可完美处理任何查询,因此它不是应用程序代码错误,而是来自 ODP.NET 的一些“超酷功能”。

已经尝试过to_number,to_whatever,同样的错误总是发生。

【问题讨论】:

    标签: vb.net oracle odp.net ora-01722


    【解决方案1】:

    替换

    CASE WHEN to_char(TEL_STATIVO) = to_char(1) THEN 
      to_char('Yes')
      ELSE
        to_char('No')
        END as Ativo,
    

    to_char(CASE WHEN to_char(TEL_STATIVO) = to_char(1) THEN 
      'Yes'
      ELSE
        'No'
        END) as Ativo,
    

    ODP.NET 现在可以识别此视图。

    【讨论】:

    • 'Yes' 和 'No' 已经是字符串,所以不需要 TO_CHAR() 转换。当客户在这种情况下不处理异常时,这很烦人,但有时他们的期望太高,以至于人类容易犯错。
    猜你喜欢
    • 2011-05-22
    • 2011-09-02
    • 1970-01-01
    • 2013-06-05
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多