通过 C# / Oracle.ManagedDataAccess 查询 oracle-view 的文本

Query the text of an oracle-view via C# / Oracle.ManagedDataAccess

使用来自 MS System.Data.OracleClient 的旧数据提供程序,我能够使用以下代码查询 oracle-view 的文本:

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

现在使用新的(本机)提供程序 Oracle.ManagedDataAccess.Client 这不再可能了。相同的代码(以及任何其他尝试)运行 无一例外,但结果始终是 String.Empty(不为空)。

实际上执行了命令(all_views中的所有其他列都是可查询的)。只有 'text' 仍然是空的。所以我怕oracle-provider出错。

有人知道答案或替代方法吗? 提前致谢。

text in all_viewslong 出于向后兼容性的原因,但该数据类型已经被弃用了几十年,因此使用起来通常很痛苦。您可能可以调整您的代码以正确使用 long 但您最好使用

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

获取视图的 DDL 作为 clob