从Progress 4GL到Oracle PL/SQL转换
Ispirer现代化转换工具支持从Progress 4GL到Oracle PL/SQL不同复杂程度应用转换!
从Progress 4GL转换到Oracle PL/SQL概观
我们的工具包是灵活的,并我们根据您对具体迁移项目的需求会定制工具包,以便达到自动化最高的水平。我们的技术团队拥有在复杂程度不同的迁移项目的工作经验。我将帮助您从Progress 4GL迅速且简单的迁移到Oracle PL/SQL。
为什么选择Ispirer MnMTK为从Progress 4GL转换到Oracle PL/SQL?
Ispirer Systems一直以实现高品位和一流的数据库迁移而备受关注。我们调整我们的迁移工具Ispirer MnMTK定制版以这样的方式能充分符合客户的业务需求。
我们主要好处:
- 高素质和经验丰富的技术支持: 我们的技术团队拥有在复杂程度不同的迁移项目的工作经验。
- 客户至上的方针和快速定制: 我们个性化我们的迁移工具可以充分满足客户的业务需求,定制的转换和优化在1-2工作日完成。
- 预售参与 : 我们会在评估决定之前展示完全转换。
- 灵活的定价策略: 我们为您提供广泛的选择,其中您一定会找到最适合您的价格方案。
- 优化转换-: 没有Ispirer的文库或转换后使用IP
了解更多关于Ispirer MnMTK的主要好处在为什么选择Ispirer页面。
评估过程
请填写调查表开始合作讨论为您的项目或获得一些粗略评估:
Ispirer转换解决方案
从Progress 4GL到Oracle PL/SQL 请求
Ispirer转换解决方案
从Progress 4GL到Oracle PL/SQL 服务
工具
转换特征
迁移Progress数据库到Oracle数据库
- 转换Progress表/视图/程序到Oracle表/视图/程序
例如,
Progress 4GL:
ADD TABLE "TB_DATATYPES"
AREA "Schema Area"
DUMP-NAME "tb_datat"
ADD FIELD "c1" OF "TB_DATATYPES" AS CHARACTER
FORMAT "X(8)"
INITIAL ""
POSITION 2
SQL-WIDTH 16
ORDER 10
ADD FIELD "c4" OF "TB_DATATYPES" AS INTEGER
FORMAT "->,>>>,>>9"
INITIAL "0"
POSITION 5
SQL-WIDTH 4
ORDER 20
ADD FIELD "c5" OF "TB_DATATYPES" AS logical
FORMAT "yes/no"
INITIAL "no"
POSITION 6
SQL-WIDTH 1
ORDER 30
.
PSC
cpstream=ISO8859-1
.
0000000976
Oracle PL/SQL:
CREATE TABLE TB_DATATYPES
(
c1 CHAR(16),
c4 NUMBER(10,0),
c5 NUMBER(1,0)
);
- 转换Progress 4GL触发器到Oracle触发器/程序
Progress 4GL:
TRIGGER PROCEDURE FOR DELETE OF gsinvhd.
FIND distribution
WHERE distribution.company = gsinvhd.company NO-LOCK NO-ERROR.
Oracle PL/SQL:
CREATE OR REPLACE TRIGGER SWT_Delete_gsinvhd
AFTER DELETE
ON gsinvhd
DECLARE
v_distribution_company VARCHAR2(255);
BEGIN
SELECT company INTO v_distribution_company FROM distribution
WHERE (distribution.company = gsinvhd.company) AND ROWNUM <=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
转换Progress 4GL代码到Oracle PL/SQL代码
- 转换Progress 4GL Procedure文件(*.p)到Oracle程序
Progress 4GL:
PROCEDURE generate-DATA :
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE gc-company AS CHARACTER NO-UNDO.
FIND company WHERE company.company = gc-company NO-LOCK NO-ERROR.
find budget WHERE budget.company = gc-company no-LOCK no-error.
Do while avail budget:
Do i = 0 TO 5:
find budget-analysis
WHERE budget-analysis.user-id = company.gc-user-id AND
budget-analysis.company = gc-company AND
budget-analysis.pc-center = "ALL" AND
budget-analysis.acct-period = i
no-error.
END.
END.
END PROCEDURE.
Oracle PL/SQL:
CREATE OR REPLACE PROCEDURE "generate-data" AS
v_company_company VARCHAR2(255);
v_company_numperiods VARCHAR2(255);
v_company_gcuserid NUMBER(10,0);
v_budget_company VARCHAR2(255);
v_i NUMBER(10,0);
v_gccompany varchar2(4000);
v_if_exists NUMBER(10,0);
v_budgetanalysis_userid NUMBER(10,0);
v_budgetanalysis_company VARCHAR2(255);
v_budgetanalysis_pccenter VARCHAR2(255);
v_budgetanalysis_acctperiod VARCHAR2(255);
BEGIN
BEGIN
SELECT company, "num-periods", "gc-user-id"
INTO v_company_company,v_company_numperiods,v_company_gcuserid
FROM company
WHERE (company.company = v_gccompany) AND ROWNUM <=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
BEGIN
SELECT company INTO v_budget_company FROM budget
WHERE (budget.company = v_gccompany) AND ROWNUM <=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
LOOP
SELECT COUNT(*) INTO v_if_exists FROM budget;
exit WHEN v_if_exists = 0;
BEGIN
v_i := 0;
while v_i <= 5 LOOP
BEGIN
SELECT "user-id", company, "pc-center", "acct-period"
INTO v_budgetanalysis_userid,v_budgetanalysis_company,
v_budgetanalysis_pccenter,v_budgetanalysis_acctperiod
FROM "budget-analysis"
WHERE ("budget-analysis"."user-id" = company."gc-user-id"
AND "budget-analysis".company = v_gccompany
AND "budget-analysis"."pc-center" = 'ALL'
AND "budget-analysis"."acct-period" = v_i)
AND ROWNUM <=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
v_i := v_i+1;
END LOOP;
END;
END LOOP;
END;
此外,您可以随时联系我们。
|