1

使用来自 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的所有其他列都是可查询的)。只有“文本”保持为空。因此,我担心 oracle-provider 出现错误。

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

4

1 回答 1

1

textinall_viewslong出于向后兼容性的原因,但这种数据类型已经被弃用了几十年,所以使用它通常很痛苦。您可能可以调整您的代码以long正确使用,但您可能最好使用

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

改为获取视图的 DDL clob

于 2019-10-08T16:50:06.433 回答