我们有一个软件解决方案,它涉及在 Progress 数据库和 SQL 服务器之间同步一些数据。不幸的是,我们内部没有任何进度专家,所以我在这里工作有点盲目,欢迎提供任何建议。
对于已经存在的工作流,对我们来说非常有效的是能够进行外部调用,从 ABL 过程的“for each”循环中将行插入 SQL 数据库。
有没有人可以将我引导到任何可能帮助我实现这一目标的代码片段或文章?
非常感谢,
我们有一个软件解决方案,它涉及在 Progress 数据库和 SQL 服务器之间同步一些数据。不幸的是,我们内部没有任何进度专家,所以我在这里工作有点盲目,欢迎提供任何建议。
对于已经存在的工作流,对我们来说非常有效的是能够进行外部调用,从 ABL 过程的“for each”循环中将行插入 SQL 数据库。
有没有人可以将我引导到任何可能帮助我实现这一目标的代码片段或文章?
非常感谢,
如果您的 SQL 数据库是 MS SQL Server,您可能需要查看适用于 Microsoft SQL Server 的 OpenEdge DataServer ( web.progress.com/en/openedge/dataserver-microsoft.html、documentation.progress.com /output/OpenEdge102b /pdfs/dmsql/dmsql.pdf )。
DataServer 为您提供对非Progress 数据库的ABL 访问,因此您可以使用标准Progress 语句,例如CREATE 添加新记录或FOR EACH 检索查询结果。
OpenEdge DataServers 也可用于 Oracle(使用 Oracle 调用接口)、DB2 和 Sybase(使用 ODBC)。MS SQL Server 的 DataServer 在幕后也使用 ODBC。web.progress.com/docs/datasheets/openedge/openedge_dataservers.pdf
您不需要数据服务器,与 ADODB 的连接在 ABL 中可以正常工作,您甚至可以使用命令对象调用存储过程,您连接的用户必须在 SQL-Server 上获得执行权限才能执行此操作。
我不是进步大师,但我确实做了一段时间的工作。AFAIK 没有办法让 ABL 代码连接到非 Progress 数据库(Progress Corp. 利用的整个供应商锁定策略的一部分)。
您最好的选择可能是让 ABL 代码将记录序列化为 XML,并使用ActiveMQ之类的东西(甚至是普通套接字或命名管道/FIFO,具体取决于您的设置)将它们发送到用更强大的语言编写的程序以执行 SQL 插入。