Запрос Progress-OpenEdge для отображения отношений столбцов таблицы

Я хочу, чтобы запрос получал связь столбца или ссылку столбца для таблицы или для всех баз данных.

Как и в MySQL, у нас есть запрос

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

Итак, какой запрос для Progress OpenEdge для получения отношения столбцов.

Кроме того, где в ProgressDB хранятся процедуры, функции и представления?

Запрос для просмотра базы данных имени списка?


person Abhishek C    schedule 27.04.2021    source источник
comment
Вы смотрели docs.progress.com/bundle/openedge-sql-reference-117/page/ ?   -  person Stefan Drissen    schedule 27.04.2021
comment
Спасибо @StefanDrissen за ссылку. Я не смог найти его.   -  person Abhishek C    schedule 27.04.2021
comment
@StefanDrissen, как мы можем получить список имен баз данных?   -  person Abhishek C    schedule 28.04.2021
comment
Один порт обеспечивает доступ к одной базе данных, поэтому я не понимаю, что вы имеете в виду под списком имен баз данных.   -  person Stefan Drissen    schedule 28.04.2021
comment
@StefanDrissen, мы не можем создать более одной базы данных? Если да, то можете ли вы помочь мне получить имя этой базы данных?   -  person Abhishek C    schedule 29.04.2021


Ответы (1)


Чтобы найти отношения, представления или хранимые процедуры, вы должны запросить метасхему. Ссылка Стефана документирует 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 появился позже и в основном используется для поддержки сторонних инструментов отчетности. В итоге есть две персоны - 4gl и sql. У них есть много общих возможностей, но есть некоторые вещи, которые они не разделяют. Хранимые процедуры являются одной из таких функций. Вы можете создать их на стороне sql, но сторона 4gl не знает о них и не будет использовать их для обеспечения соблюдения ограничений или для любых других целей. Поскольку, как я уже упоминал, большинство баз данных Progress создаются для поддержки приложения 4gl, очень необычно иметь какие-либо хранимые процедуры sql.

(Что еще больше усложняет ситуацию, так это то, что в движок 4gl встроен некоторый старый синтаксис sql-89. Но этот очень старый синтаксис на самом деле просто поддерживает токен sql и недоступен для программ, отличных от 4gl.)

person Tom Bascom    schedule 27.04.2021
comment
Спасибо @TomBascom, можете ли вы помочь мне с запросом, чтобы получить все имена баз данных в базе данных Progress? - person Abhishek C; 29.04.2021