从 Informix 4GL 到 Oracle PL/SQL 转换
Ispirer现代化转换工具支持从Informix 4GL到Oracle PL/SQL不同复杂程度应用转换! Migration and Modernization Toolkit是按照您项目的条件很易于制定的工具。
为什么选择Ispirer MnMTK为从Informix 4GL到Oracle PL/SQL转换?
Ispirer Systems一直以实现高品位和一流的数据库迁移而备受关注。我们调整我们的迁移工具Ispirer MnMTK定制版以这样的方式能充分符合客户的业务需求。
我们主要好处:
- 高素质和经验丰富的技术支持: 我们的技术团队拥有在复杂程度不同的迁移项目的工作经验。
- 客户至上的方针和快速定制: 我们个性化我们的迁移工具可以充分满足客户的业务需求,定制的转换和优化在1-2工作日完成。
- 预售参与 : 我们会在评估决定之前展示完全转换。
- 灵活的定价策略: 我们为您提供广泛的选择,其中您一定会找到最适合您的价格方案。
- 优化转换-: 没有Ispirer的文库或转换后使用IP
评估过程
请填写调查问卷,以开始您项目中的谈判或得到粗略的估计:
Ispirer转换解决方案
从 Informix 4GL 到 Oracle PL/SQL 请求
Ispirer转换解决方案
从 Informix 4GL 到 Oracle PL/SQL 服务
工具
转换特征
把Informix 4GL函数(*.4gl)转换到PL/SQL函数/过程(*.sql)
Informix 4GL:
function sample_func(s_char)
#-------------------#
define
s_char char(100),
i smallint,
j smallint,
r_char char(100)
let r_char = " "
for i = 1 to 100
if (s_char[i,i] = " ") then
continue for
else
let r_char = s_char[i,100]
exit for
end if
end for
return r_char
end function
Oracle PL/SQL:
FUNCTION sample_func(s_char IN CHAR)
---------------------#
return CHAR
as
i NUMBER(5,0) := 0;
j NUMBER(5,0) := 0;
r_char CHAR(100) := ' ';
BEGIN
r_char := SUBSTRB(' ',1,100);
FOR SWR_i IN 1 .. 100
LOOP
i := SWR_i;
if (SUBSTRB(s_char,i,1)) then
continue;
else
r_char := SUBSTRB
(SUBSTRB(s_char,i,101 - i),1,100);
exit;
end if;
END LOOP;
return r_char;
end;
注释转换:
单行注释
Informix 4GL:
#Comment
Oracle PL/SQL:
--Comment
多行注释:
Informix 4GL:
{
Comments
}
Oracle PL/SQL:
/*
Comments
*/
数据类型转换
Informix 4GL类型 |
Oracle PL/SQL数据类型 |
char(length) |
CHAR(length) |
smallint |
NUMBER(5,0) |
integer |
NUMBER(10,0) |
date |
DATE |
decimal(n,m) |
NUMBER(n,m) |
记录转换
like id.*记录
Informix 4GL
define c0 record like ctl_f0.*
Oracle PL/SQL:
c0 ctl_f0%rowtype;
记录与记录清单
Informix 4GL:
define w_just record
b_yy integer,
b_mm integer,
b_dd integer
end record
Usage:
Let wjust.* = c0.*
Oracle PL/SQL:
TYPE SWT_w_just IS record(b_yy NUMBER(10,0),
b_mm NUMBER(10,0),b_dd NUMBER(10,0));
w_just SWT_w_just;
Usage:
wjust := c0;
数组记录与记录清单
Informix 4GL:
define nbw array[4,60] of record
nb_g_kbn char(1),
nb_g_nymd char(7)
end record
Usage:
let nbw[1,i].*=nbw[4,i].*
Oracle PL/SQL:
TYPE SWT_nbw IS record(nb_g_kbn CHAR(1),nb_g_nymd CHAR(7));
TYPE SWT_nbw2 IS VARRAY(60) OF SWT_nbw;
TYPE SWT_nbw3 IS VARRAY(4) OF SWT_nbw2;
nb1w SWT_nbw3;
Usage:
nbw(1)(i) := nbw(4)(i);
内置函数、表达式与谓词的转换
|
Informix 4GL类型 |
Oracle PL/SQL数据类型 |
Ascii函数 |
let a = ascii 223 |
a:= chr(223); |
Clipped函数 |
let a = b clipped |
a:= RTRIM(b); |
Date函数 |
let a = date(b) |
a:= to date(b); |
Day函数 |
let a = day(b) |
a:= EXTRACT(day from b); |
Mdy函数 |
let a = mdy(b,c,d) |
a := TO_DATE(TO_CHAR(b) || '-' || TO_CHAR(c) || '-' || TO_CHAR(d),'mm-dd-yy'); |
Month函数 |
let a = month(b) |
a := EXTRACT(month from b); |
Upshift函数 |
let a = upshift(b) |
SET a = UPPER(b) |
Using函数 |
let a = b using "######&" |
a := to_char(b,’9999990’); |
Year函数 |
let a = year(b) |
a := EXTRACT(year from b); |
Concat表达式 |
let a = b, “cd”,d |
a := b || “cd” || d; |
Mod表达式 |
let a = b mod 2 |
a := mod(b, 2); |
Substring表达式 |
let a = b[2,2] |
a := substr(b,2,1); |
True/False表达式 |
let a = true
let a = false
|
a := 1;
a := 0;
|
Matches谓词 |
if (n not matches "[0123456789]") then |
if (not regexp_like(n,'[0123456789]')) then |
True谓词 |
while(true) |
while(1 = 1) |
业务逻辑的语句转换
例如,
用于range loop
Informix 4GL:
for i = 1 to 10…
…
End for
Oracle PL/SQL:
FOR i IN 1..10
LOOP
…
END LOOP;
Case语句
Informix 4GL:
case a
when 1
…
when 2
…
otherwise
…
…
end case
Oracle PL/SQL:
case a
when 1
THEN
…
when 2
THEN
…
ELSE
…
…
end case
Informix 4GL:
declare cur_n0 cursor for
select n0_ch from nkin_a
where (n0_kau_no = s_kau_no)
and (n0_cd = s_cd)
Oracle PL/SQL:
cursor cur_n0 IS select n0_ch from nkin_a
where (n0_kau_no = s_kau_no)
and (n0_cd = s_cd);
如果您也需要从Informix 4GL转换到Oracle PL/SQL,请联系我们,我们将很高兴为您服务!
|