使用IBM DB2例程简化迁移的步骤
2008-09-03 16:27:48 来源:WEB开发网当使用来自于不同供应商的不同数据库系统时,用户和数据库管理员将不可避免地碰到在这些产品中各不相同的特性和功能。通常,可在以下方面发现这些差异:
◆受支持的SQL方言中的不同语法。
◆数据库管理器应用程序界面。
◆不同的管理工具及其用法。
为了使得将数据库和应用程序从Oracle、Sybase或Microsoft SQL Server等数据库产品迁移到IBM DB2,Universal Database(UDB)更容易,本文将展示一些可行的DB2 UDB功能实现,而且这些功能在其他数据库系统中也可获得。这些实现将涉及创建存储过程和用户定义函数(UDF)以实现那些常常被请求的功能。
在“下载”小节中,您将找到这些过程和函数的源代码以及包含了create PROCEDURE和create FUNCTION语句的SQL脚本。如果您对确切的实现细节很感兴趣,就请查阅这些代码。一旦编译并链接了源代码(或安装了预编译的库)以及在数据库中注册了这些过程和函数之后,您就可以按本文实例所演示的那样来使用它们了。另外值得注意的是,这些过程和函数可用于DB2 UDB版本7和版本8。
清除表
当从Oracle迁移到DB2时,所碰到的一个普遍问题就是truncate命令。在Oracle中执行时,该命令不用借助一个或多个delete操作就可快速地清除表中所有内容,delete操作需要进行大量的日志记录。
DB2的IMPORT功能提供了完成相同功能的方法,只要使用REPLACE INTO子句以及将一个空文件指定为数据源。在该情况下,表中所有的行都将被快速清除并且只使用一条日志记录,接着就从给定的文件中导入新的数据。而对于一个空文件,就不会导入任何内容,从而在该操作结束时清除了该表。
要实现该功能,我们可以利用DB2定义的叫做 sqluimpr() 的CAPI函数来以程序的方式将数据导入数据库的表中。我们将这个API包装到存储过程中,以便可通过SQL接口用于所有的应用程序,而无需考虑编程的语言。清单1中展示了存储过程truncate_TABLE的签名。
赞助商链接