perls dbi:Oracle table_info/column_info 从哪里获取信息?

Where do perls dbi:Oracle table_info/column_info get their information from?

我有一个(至少我是这么认为的)简单任务:通过列名、数据类型和长度比较 2 tables 只是为了验证它们到目前为止具有相同的结构。它应该在连接到两个不同数据库的现有 perl 脚本中完成。

首先我简单地查询了每个数据库user_tab_columns并比较了结果。现在我发现 user_tab_columns 不是实时的,但必须通过分析 table ( http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4462.htm#REFRN26277 ) 来刷新,这是我绝对不知道的。

describe 获得了实际的 table 定义,但似乎无法通过 perls dbi:Oracle 工作,所以我偶然发现了 table_info()column_info() 方法。 但是他们从哪里得到他们的信息? 如果他们也只是查询 *_tab_columns,他们对我没有用。

我不能简单地测试,因为我还没有设法传递正确的参数。 Dbi Documentation says it is according to the database driver. The Oracle DBD Documentation 对我也不是很有帮助,到目前为止,反复试验导致获得所有对象或什么都没有。

目前我正在考虑通过 perl 系统调用通过 sqlplus 执行 describe 并解析输出....但是 是一个更好的方法。

编辑:

如果检查正确的列(请参阅下面的评论),视图 user_tab_columns 会按预期工作。

您可能没有发现 DBD::Oracle 文档特别有用,但您是否考虑过使用源代码?

这是 table_info() and column_info() 的来源。这两个子例程似乎主要用于构建 SQL 语句。