从 Informix 4GL 到 Microsoft SQL Server T-SQL
Ispirer MnMTK可以将Informix 4GL函数转换到Microsoft SQL Server T-SQL.
Ispirer现代化转换工具支持从Informix 4GL到Microsoft SQL Server T/SQL不同复杂程度应用转换!
为什么选择Ispirer MnMTK?
Ispirer Systems一直以实现高品位和一流的数据库迁移而备受关注。我们调整我们的迁移工具Ispirer MnMTK定制版以这样的方式能充分符合客户的业务需求。
我们主要好处:
Ispirer转换解决方案
从 Informix 4GL到MS SQL Server 请求
Ispirer转换解决方案
从 Informix 4GL到MS SQL Server 服务
工具
转换特征
Informix数据库向Microsoft SQL Server数据库:
- 表与数据
- 转换列定义 - 数据类型、默认值、NOT NULL约束
- 转换完整性约束 - 主键与外键、唯一性与检查约束
- 转换注释
- 解决保留字与标识符冲突
- 移植数据
- 索引与视图
- 存储过程、函数与触发器
- 转换过载过程与函数
- 转换全局变量
- 转换Informix OUTER JOIN语法
- 转换异常处理
- 转换动态SQL
欲了解更多详情,请访问Informix到SQL Server数据库迁移。
如果您的Informix 4GL函数被另外的数据库而使用(例如, Oracle、DB2等),您可以收到更多信息在Informix数据库迁移网页。
Informix 4GL代码转换到Microsoft T-SQL
转换Informix 4GL函数(*.4gl)到T-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
Microsoft SQL Server T-SQL:
FUNCTION sample_func(@s_char CHAR(2000))
---------------------#
RETURNS CHAR(2000)
BEGIN
DECLARE @i INT = 0
DECLARE @j INT = 0
DECLARE @r_char CHAR(100) = ' '
DECLARE @SWR_i INT
SET @r_char = SUBSTRB(' ',1,100)
SET @SWR_i = 1
while (@SWR_i <= 100)
BEGIN
SET @i = @SWR_i
IF(SUBSTRB(@s_char,@i,1))
continue
ELSE
BEGIN
SET @r_char = SUBSTRB(SUBSTRB(@s_char,@i,101 -@i),1,100)
BREAK
END
SET @SWR_i = @SWR_i+1
END
RETURN @r_char
END
转换注释:
单行注释
Informix 4GL:
#Comment
Microsoft SQL Server T-SQL:
--Comment
多行注释
Informix 4GL:
{
Comments
}
Microsoft SQL Server T-SQL:
/*
Comments
*/
转换数据类型
Informix 4GL类型 |
Microsoft T-SQL数据类型 |
char(length) |
CHAR(length) |
smallint |
INT |
integer |
INT |
date |
DATETIME |
decimal(n,m) |
DECIMAL(n,m) |
将记录转换到表类型变量
Informix 4GL:
define c0 record LIKE ctl_f0.*
Microsoft SQL Server T-SQL:
DECLARE @c0 TABLE (ctl_f0_id INT, ctl_f0_name VARCHAR(100),
ctl_f0_description VARCHAR(1000))
转换内置函数、表达式与谓词
|
Informix 4GL类型 |
Microsoft T-SQL数据类型 |
Ascii函数 |
let a = ascii 223 |
SET a = CHAR(223) |
Clipped函数 |
let a = b clipped |
SET a = RTRIM(b) |
Date函数 |
let a = date(b) |
SET a = CONVERT(DATETIME, b) |
Day函数 |
let a = day(b) |
SET a = DATEPART(DAY, b) |
Mdy函数 |
let a = mdy(b,c,d) |
SET a = CONVERT(DATETIME,STR(b) + '-' + STR(c) + '-' + STR(d)) |
Month函数 |
let a = month(b) |
SET a = month(b) |
Upshift函数 |
let a = upshift(b) |
SET a = UPPER(b) |
Using函数 |
let a = b using "######&" |
SET a = STR(b,[’9999990’]) |
Year函数 |
let a = year(b) |
SET a = year(b) |
Concat表达式 |
let a = b, “cd”,d |
SET a = b + [“cd”] + d |
Mod表达式 |
let a = b mod 2 |
SET a = b%2 |
Substring表达式 |
let a = b[2,2] |
SET a = substr(b,2,1) |
True/False表达式 |
let a = true
let a = false |
SET a = true
SET a = false |
Matches谓词 |
if (n not matches "[0123456789]") then |
if (not regexp_like(n,'[0123456789]')) then |
转换业务逻辑的语句
例如,
对于range loop
Informix 4GL:
FOR i = 1 TO 10…
…
END FOR
Microsoft SQL Server T-SQL:
SET @i = 1
while (@i <= 10)
BEGIN
…
SET @i = @i+1
END
Case语句
Informix 4GL:
CASE a
WHEN 1
…
WHEN 2
…
otherwise
…
…
END CASE
Microsoft SQL Server T-SQL:
IF @a = 1
…
ELSE IF @a = 2
…
ELSE IF …
…
ELSE
…
END
Declare光标
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)
Microsoft SQL Server T-SQL:
DECLARE CUR_N0 cursor FOR SELECT n0_ch FROM nkin_a
WHERE (n0_kau_no = s_kau_no)
AND (n0_cd = s_cd)
如果您对此迁移服务表示感兴趣,请联系我们并获取更多信息。
|