我们有一个软件解决方案,涉及在Progress数据库和SQL服务器之间同步一些数据。不幸的是,我们内部没有任何进步专家,所以我在这里工作有点盲目,欢迎提供任何建议。
对于已经存在的工作流,对我们来说非常有效的是能够执行外部调用,从ABL过程的'for each'循环中将行插入SQL数据库。
是否有人能够将我引导至任何可能帮助我实现此目的的代码片段或文章?
非常感谢,
答案 0 :(得分:3)
如果您的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)。 DataServer for MS SQL Server也在后台使用ODBC。 web.progress.com/docs/datasheets/openedge/openedge_dataservers.pdf
答案 1 :(得分:1)
您不需要dataserver,与ADODB的连接在ABL中工作正常,您甚至可以使用命令对象调用存储过程,您连接的用户必须在SQL-Server上获得EXEC rigths才能执行此操作。
答案 2 :(得分:0)
我不是进步大师,但我确实做了一段时间的工作。 AFAIK没有办法让ABL代码连接到非Progress数据库(整个供应商锁定策略Progress Corp.利用的一部分)。
您最好的选择可能是让ABL代码将记录序列化为XML,并使用类似ActiveMQ(甚至是普通套接字或命名管道/ FIFO,具体取决于您的设置)将它们发送到程序用更强大的语言编写来执行SQL插入。