通过 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_views
是 long
出于向后兼容性的原因,但该数据类型已经被弃用了几十年,因此使用起来通常很痛苦。您可能可以调整您的代码以正确使用 long
但您最好使用
select dbms_metadata.get_ddl( 'VIEW', 'MY_VIEW' )
from dual
获取视图的 DDL 作为 clob
。
使用来自 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_views
是 long
出于向后兼容性的原因,但该数据类型已经被弃用了几十年,因此使用起来通常很痛苦。您可能可以调整您的代码以正确使用 long
但您最好使用
select dbms_metadata.get_ddl( 'VIEW', 'MY_VIEW' )
from dual
获取视图的 DDL 作为 clob
。