Progress-OpenEdge 查询以显示 table 的列关系

Progress-OpenEdge query to show Column Relations of the table

我想要一个查询来获取 列关系 table 的引用 所有数据库

就像在MySQL中一样,我们有一个查询

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'database_name';

那么,Progress OpenEdge 获取列关系的查询是什么。

此外,过程、函数和视图 存储在 ProgressDB 中的什么位置?

查询查看数据库名称列表?

要查找关系、视图或存储过程,您必须查询元模式。 Stefan 的 link 文档 SYSTABLES、SYSCOLUMNS、SYSINDEXES、SYSPROCEDURES 和 SYSVIEWS。这些表格定义了您所要求的内容。

https://docs.progress.com/bundle/openedge-sql-reference-117/page/OpenEdge-SQL-System-Catalog-Tables.html

Progress 数据库没有明确存储关系。按照惯例,当表之间存在公共字段名称时,它们是隐含的,但这不会在引擎中创建任何特殊关系。您可以分析上面的表格并做出一些猜测,但最终,您可能需要参考您正在使用的应用程序的文档。

大多数 Progress 数据库都是为 Progress 4gl 应用程序创建的。 SQL 后来出现,主要用于支持第 3 方报告工具。因此,有两个角色 - 4gl 和 sql。他们有许多共同的能力,但也有一些他们不共享的东西。存储过程就是这样的一个特性。您可以在 sql 端创建它们,但事物的 4gl 端不知道它们,并且不会将它们用于强制约束或用于任何其他目的。正如我所提到的,大多数 Progress 数据库都是为支持 4gl 应用程序而创建的,因此拥有任何 sql 个存储过程是非常不寻常的。

(使事情变得更加复杂的是,4gl 引擎中嵌入了一些旧的 sql-89 语法。但这种非常古老的语法实际上只是令牌 sql 支持,不适用于非 4gl 程序。)