简单有效的SQL 存储过程移植方案(2)——从Sybase 到DB2
来源:互联网 发布:mac口红什么颜色好看 编辑:程序博客网 时间:2024/05/22 23:09
简单有效的SQL Stored Procedure移植方案 (2)
简单有效的SQL Stored Procedure移植方案 (2)
第六步:修改 DECLARE 语句
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:DECLARE
修改点:
为所有类型添加 DEFAULT 值,
DEFAULT‘’ -- for Char or Varchar
DEFAULT 0; -- for int
DEFAULT 0.0; -- for numeric
◆为 char 和 varchar 添加 CCSID ASCII。
◆如果函数体中间部分也存在 DECLARE 语句(比如 DECLARE CURSOR ),必须把它移到程序开始处。
注意: DB2 中所有 DECLARE 语句必须位于程序开始处。并且必须遵循以下顺序:
1. SQL variable and condition declarations
2. Statement declarations
3. Cursor declarations
4. Handler declarations
5. Any valid statements for an SQL procedure body
第七步:多行注释等价改写成多个单行
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:/*
修改点:使用‘--’进行逐行单行注释( DB2 不支持多行注释)。
第八步:IF 语句的等价修改
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:IF
修改点:分两种语句格式:
清单6 :多行注释等价改写成多个单行
第一种语句格式:
Sybase代码:
IF … BEGIN ……END
DB2代码:
IF …THEN
BEGIN …… END ;
END IF;
第二种语句格式:
Sybase代码:
IF … BEGIN ……END
ELSE BEGIN ……END
DB2代码:
IF … THEN
BEGIN …… END ;
ELSE
BEGIN …… END;
END IF;
第九步:在句末加上‘;’
方法:在每一个完整的语句末尾添加‘;’表示语句的分隔。
第十步: 普通 FUNCTION 替换
方法:方法2,全局查找,逐个确认替换。有时+表示数据相加,不能替换。
查找关键词:+ //这里表示字符串变量的连接
替换词:||
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:CONVERT
替换词:CAST
修改点:
清单7 :在句末加上‘;’
Sybase 代码:
CONVERT( DataType , V_1 )
DB2 代码:
CAST( V_1 as DataType )
方法:方法2,全局查找,逐个确认替换。
查找关键词:DATEDIFF
替换词:待定
方法:方法2,全局查找,逐个确认替换。
查找关键词:DATEADD
替换词:待定
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:"
替换词:'
注意:若是表示字符串,直接替为'。但是有时两个单引号表示字符串内部的一个单引号,这是不能替换。
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:SQUARE
修改点: DB2 不支持函数 SQUARE,需要重新改写。
清单8 :改写对函数 SQUARE 的支持
Sybase 代码:
SQUARE (V_1)
DB2 代码:
V_1 * V_1
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:SQRT
修改点:进行开平方运算时可能会出现精度不够,导致数据误差,需要根据具体情况改写。
清单9:修改关键词SQRT
Sybase 代码:
SQRT ( V_1 / V_2)
DB2 代码:
SQRT ( V_1 / 1000000 / V_2) * 1000
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:NULL
修改点:分两种情况:
情况1:表示判断是否为 NULL 的语句。
清单10:关键词NULL情况1
Sybase 代码:
Where V_1 = NULL
DB2 代码:
Where V_1 is NULL
情况2:在如下格式的语句‘insert into … select … ,NULL , … from … ’中, select 子句中 NULL 作为插入的值,但 DB2 不支持这种语法,去掉该列,默认插入值即为 NULL 值.
清单11:关键词NULL情况2
Sybase 代码:
insert into T_1(C_1,C_2) select C_1,NULL from T_2;
DB2 代码:
insert into T_1(C_1) select C_1 from T_2;
第十一步:getdate() 函数替换
getdate() 用于获取不同格式的时间表达。
CONVERT(CHAR, GETDATE(), 112) 时间格式为 YYYYMMDD
CONVERT(CHAR, GETDATE(), 108) 时间格式为 HHMISS
情况1:不在乎时间的格式,可以直接替换。
方法:方法2,全局查找,逐个确认替换。
查找关键词:getdate()
替换词:CURRENT TIMESTAMP
清单12:getdate()函数替换情况1
Sybase 代码:
SELECT @v_1 = GETDATE() ;
DB2 代码:
SET v_1 = TIMESTAMP
转自:http://www.vstcn.net/JiShuWenZhangShow.asp?ID=742
- 简单有效的SQL 存储过程移植方案(2)——从Sybase 到DB2
- 简单有效的SQL 存储过程移植方案(1)——从Sybase 到DB2
- 简单有效的SQL 存储过程移植方案(3)——从Sybase 到DB2
- 从java写的存储过程转换到DB2的SQL存储过程的笔记
- SQL-SYBASE存储过程
- Sybase 存储过程迁移至DB2错误集锦——不断更新
- sybase存储过程简单示例
- 简单有效的分页存储过程
- 【SQL Server】存储过程的设计与概念(2)从存储过程接收信息
- DB2 SQL存储过程语法
- DB2 SQL存储过程语法
- Sybase存储过程的使用
- 从C#中移植CRC64(ECMA-182)的实现到 MySQL 存储过程
- SYBASE到DB2连接服务器的实现
- SQL Server 存储过程的分页方案
- SQL Server 存储过程的分页方案
- DB2的存储过程
- 简单的SQL存储过程
- 如何通过VC的 CHttpFile 抓取网页内容
- MongoDB最佳实践
- 网页插入音乐的方法
- 有用的开源库支持
- Oracle主键约束、唯一键约束、唯一索引的区别
- 简单有效的SQL 存储过程移植方案(2)——从Sybase 到DB2
- php 使用pear库发送带附件邮件(来自Stack overflow)
- mplayer命令列表
- Linux中/proc目录下文件详解(一)
- 怎样写linux下的USB设备驱动程序
- php pdo中bindParam() 和 bindValue()方法的区别
- 简单有效的SQL 存储过程移植方案(3)——从Sybase 到DB2
- wordpress设置漂亮固定连接时出错的解决方法
- Sample_BSP源码简析