Запросить текст представления оракула через C # / Oracle.ManagedDataAccess - PullRequest
1 голос
/ 08 октября 2019

Со старым провайдером данных от MS System.Data.OracleClient Мне удалось запросить текст представления оракула с помощью следующего кода:

...
cmd.CommandText = "select text from all_views where view_name = 'MY_VIEW'";
var viewText    = cmd.ExecuteScalar();
...

Теперь сновый (собственный) поставщик Oracle.ManagedDataAccess.Client это больше невозможно. Тот же код (и любые другие попытки) выполняются без исключения, но результатом всегда является String.Empty (не null).

Фактически команда выполняется (все остальные столбцы из all_views являются обязательными). Только «текст» остается пустым. Поэтому я боюсь ошибки в провайдере оракула. ​​

Кто-нибудь знает ответ или альтернативный метод? Спасибо заранее.

1 Ответ

1 голос
/ 08 октября 2019

text в all_views - это long по причинам обратной совместимости, но этот тип данных уже устарел в течение нескольких десятилетий, поэтому с ним часто бывает трудно работать. Вы, вероятно, можете адаптировать свой код для правильной работы с long, но вам, вероятно, лучше использовать

select dbms_metadata.get_ddl( 'VIEW', 'MY_VIEW' )
  from dual

, чтобы вместо этого получить DDL для представления как clob.

...