Выполнение процедуры ABL для вставки SQL

У нас есть программное решение, которое включает синхронизацию некоторых данных между базой данных Progress и SQL-сервером. К сожалению, у нас нет гуру прогресса, поэтому я работаю здесь как бы слепо и буду рад любым советам, которые я предлагаю.

Для уже существующего рабочего процесса нам очень хорошо подошла бы возможность выполнить внешний вызов для вставки строки в базу данных SQL из цикла «для каждого» внутри процедуры ABL.

Может ли кто-нибудь направить меня к каким-либо фрагментам кода или статьям, которые могут помочь мне в этом?

Большое спасибо,


person Sam    schedule 09.06.2011    source источник


Ответы (3)


Если ваша база данных SQL - это MS SQL Server, вы можете взглянуть на OpenEdge DataServer для Microsoft SQL Server (web.progress.com/en/openedge/dataserver-microsoft.html, documentation.progress.com/output/OpenEdge102b/pdfs/dmsql/dmsql.pdf).

DataServer предоставляет вам ABL-доступ к базе данных, отличной от Progress, поэтому вы можете использовать стандартные операторы Progress, например СОЗДАТЬ, чтобы добавить новые записи, или ДЛЯ КАЖДОГО, чтобы получить результаты запроса.

Серверы данных OpenEdge также доступны для Oracle (с использованием Oracle Call Interface), DB2 и Sybase (с использованием ODBC). DataServer для MS SQL Server также негласно использует ODBC. web.progress.com/docs/datasheets/openedge/openedge_dataservers.pdf

person ondroid    schedule 09.06.2011

Сервер данных не нужен, соединение с ADODB отлично работает в ABL, вы даже можете вызывать хранимые процедуры с помощью объекта команды, для этого пользователю, с которым вы подключаетесь, должны быть предоставлены права EXEC на SQL-сервере.

person Odd    schedule 01.02.2012

Я не гуру Прогресса, но какое-то время поработал над этим. AFAIK не существует способа подключить код ABL к базе данных, не относящейся к Progress (часть всей этой стратегии привязки к поставщику, которую использует Progress Corp.).

Лучше всего, вероятно, чтобы код ABL сериализовал записи в XML и использовал что-то вроде ActiveMQ (или даже простой сокет или именованный канал / FIFO в зависимости от вашей настройки), чтобы отправить их в программу, написанную на более подходящем языке для выполнения вставки SQL.

person Abe Voelker    schedule 09.06.2011
comment
Серверы данных прогресса используются для подключения к сторонним базам данных. - person Tom Bascom; 09.06.2011