通过C#/oracle.ManagedDataAccess查询oracle视图的文本

通过C#/oracle.ManagedDataAccess查询oracle视图的文本,c#,oracle,oracle.manageddataaccess,C#,Oracle,Oracle.manageddataaccess,使用MSSystem.data.OracleClient中的旧数据提供程序,我能够使用以下代码查询oracle视图的文本: ... cmd.CommandText = "select text from all_views where view_name = 'MY_VIEW'"; var viewText = cmd.ExecuteScalar(); ... 现在有了新的(本机)提供程序Oracle.ManagedDataAccess.Client,这就不可能了。相同的代码(以及任何其

使用MSSystem.data.OracleClient中的旧数据提供程序,我能够使用以下代码查询oracle视图的文本:

...
cmd.CommandText = "select text from all_views where view_name = 'MY_VIEW'";
var viewText    = cmd.ExecuteScalar();
...
现在有了新的(本机)提供程序Oracle.ManagedDataAccess.Client,这就不可能了。相同的代码(以及任何其他尝试)毫无例外地运行,但结果始终为String.Empty(非null)

实际上,该命令已经执行(所有视图中的所有其他列都是可查询的)。只有“文本”保持为空。因此,我担心oracle提供程序中出现错误

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

所有视图中的文本
由于向后兼容的原因是一个长的,但是这种数据类型已经被弃用了几十年,所以使用起来常常很痛苦。您可能可以调整代码以正确使用
long
,但使用

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

要获取视图的DDL,请改为
clob

请参阅Thx David。问题解决了,这个医生很有帮助,tooHi Justin,非常感谢你的回答。这就解决了一个你是对的问题:长数据类型就是原因。函数“dbms_metadata.get_ddl”以CLOB的形式返回文本。这可以通过ManagedDataAccess提供程序读取:-)