РАЗДРАЖАЮЩАЯ ОШИБКА ПРОСМОТРА Oracle XE + ODP.NET

Ребята, вот мой взгляд:

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 и всегда происходит одна и та же ошибка.


person Alex    schedule 07.05.2010    source источник


Ответы (1)


заменять

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

to

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

ODP.NET теперь распознает это представление.

person Alex    schedule 07.05.2010
comment
«Да» и «Нет» уже являются строками, поэтому преобразование TO_CHAR() не требуется. Раздражает, когда клиенты не обрабатывают исключение в таких обстоятельствах, но иногда у них есть ожидания, которые слишком высоки для человека. - person APC; 10.05.2010