通过C#/oracle.ManagedDataAccess查询oracle视图的文本
使用MSSystem.data.OracleClient中的旧数据提供程序,我能够使用以下代码查询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,这就不可能了。相同的代码(以及任何其
...
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提供程序读取:-)