You need to enable JavaScript to run this app. Progress OpenEdge列关联查询、元数据存储及库列表查询方法
优惠活动
大模型
产品
解决方案
定价
更多

Progress OpenEdge列关联查询、元数据存储及库列表查询方法

Progress OpenEdge 元数据相关查询指南

列关联、列引用查询(对应MySQL INFORMATION_SCHEMA.KEY_COLUMN_USAGE)

OpenEdge 未采用 MySQL 式的虚拟 INFORMATION_SCHEMA 架构,所有数据对象元数据存储在 PUB schema 下以下划线为前缀的系统编目表中。要获取全库或指定表的主外键关联、列引用关系,可通过关联以下系统表实现,支持仿照 MySQL 的逻辑筛选指定数据库、指定表:

SELECT 
  fk._DbName AS 所属数据库,
  childTable._File-Name AS 外键表名,
  childCol._Field-Name AS 外键列名,
  parentTable._File-Name AS 关联主键表名,
  parentCol._Field-Name AS 关联主键列名
FROM PUB._ForeignKey fk
-- 关联外键所属表元数据
JOIN PUB._File childTable 
  ON fk._Foreign-File-Id = childTable._File-Id 
  AND fk._DbName = childTable._DbName
-- 关联外键与主键的列映射关系
JOIN PUB._ForeignKeyRow fkRow
  ON fk._Idx-Name = fkRow._Idx-Name 
  AND fk._DbName = fkRow._DbName
-- 关联外键列元数据
JOIN PUB._Field childCol
  ON fkRow._Foreign-Field-Id = childCol._Field-Id
  AND childCol._File-Id = childTable._File-Id
-- 关联主键所属表元数据
JOIN PUB._File parentTable 
  ON fk._Primary-File-Id = parentTable._File-Id 
  AND fk._DbName = parentTable._DbName
-- 关联主键列元数据
JOIN PUB._Field parentCol
  ON fkRow._Primary-Field-Id = parentCol._Field-Id
  AND parentCol._File-Id = parentTable._File-Id
-- 筛选指定表:如需查询单个表,追加 AND childTable._File-Name = '目标表名'
-- 筛选指定数据库:如需限定范围,追加 AND fk._DbName = '目标数据库名'

如需查询主键约束本身的列信息,可关联_Index、_IndexRow、_File、_Field系统表,筛选_Index.Type = 0(主键标识)即可。

存储过程、函数、视图的存储位置

  • 视图:元数据与定义信息存储于数据库内部的 _View、_ViewTable、_ViewTrig 系统表,包含视图创建SQL、关联基表、内置触发规则等内容
  • ABL(原4GL)存储过程/函数:元数据(名称、入参出参、所属schema、编译版本)存储于 _Procedure 系统表,编译后的r-code默认存储在操作系统配置的PROPATH路径下,也可配置为直接存储在数据库内部
  • 纯SQL语法编写的存储过程/函数:定义代码、参数元数据全部存储于数据库内部的 _SqlProc、_SqlParam 系统表,无独立物理文件

数据库名称列表查询语句

OpenEdge 同一客户端连接可挂载多个独立数据库实例,查询当前连接下所有挂载数据库的语句为:

SELECT 
  _DbName AS 数据库名,
  _Db-Path AS 数据库物理存储路径
FROM PUB._Db;

内容的提问来源于stack exchange,提问作者Abhishek C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 03:24:03