级别: 中级
【程序编程相关:支持的 JDBC 驱动程序】micks purnell 【推荐阅读:DB2 表为 Delphi 产生动态的数】
【扩展信息: 服务引擎的 DB2 瘦客户机:第 2 】 ibm advanced technical support americas, ibm corporation 2004 年 9 月 db2® information integrator 使您能够访问公司很多部门以不同数据类型.不同格式存储在不同的数据库中的数据.如果您需要在 db2 information integrator 中访问 sybase 存储过程,本文可以提供帮助.micks purnell 将告诉您如何设置 db2 ii,以利用 sybase 中已存在的包含结果集的存储过程.简介
sybase 数据库用户常常出于不同的目的创建一些存储过程.需要经常访问 sybase adaptive server enterprise (ase) 的 db2 information integrator (db2 ii) 用户都喜欢利用 sybase 中已有的存储过程.然而,db2 ii 仍不支持用户在 db2 ii 中发出对存储过程名的请求,并由 db2 ii 将该请求发送给 sybase 中的存储过程.解决这一问题的一种方法是,让 db2 ii 用户在 db2 ii 中创建存储过程所使用的 sybase 表的昵称,然后创建一个 db2 版的存储过程,直接在 db2 ii 中运行. ibm sybase-to-db2 migration toolkit便可以创建 sybase 存储过程的 db2 版.
本文描述的是在 sybase 存储过程返回一个单独的结果集的情况下,可用来解决上述问题的另一种方法.通过这种方法,db2 ii 可以使用 sybase 中已有的存储过程.简而言之,首先在 sybase 服务器为存储过程的结果集创建“现有表(existing table)”,然后创建 sybase “现有表”的 db2 ii 昵称.当 db2 ii 用户访问该昵称时,db2 ii 向 sybase 发送一个访问“现有表”的请求.然后,sybase 运行存储过程并将结果集发送给 db2 ii.
技术描述
sybase 现有表(existing table)是 sybase ase 中的一种代理表.创建“现有表”时,首先会创建一个代理表,然后检索与存储远程表中的元数据,并将该元数据放入到这个代理表中.sybase ase 中的 "create existing table" 命令允许将代理表映射到在远程位置的一个表.视图或者过程.在以下情况下,db2 information integrator 用户与应用程序可以访问会返回结果集的 sybase ase 存储过程:
为该存储过程创建了一个 sybase 现有表. 为该 sybase 现有表创建了一个 db2 ii 昵称.db2 ii 用户或应用程序从昵称中进行选择,而 db2 ii 则连接到 sybase,并从现有表中进行选择.sybase 将运行现有表定义中引用的存储过程,并返回存储过程结果集,db2 ii 会将该结果集交给用户或应用程序.
要获得对 sybase ase 中 "create exiting table" 命令的描述,请参阅 sybase reference manual: commands.注意,"create existing table" 命令要求 sybase ase 的版本为 version 11.9.2 .version 12 或 version 12.5.而且,必须在 sybase 服务器上安装并启动 sybase ase component integration services.
要获得访问 sybase ase 时对 db2 ii 的要求以及如何配置 db2 ii 才能访问 sybase ase 与创建昵称的描述,请参阅 db2 information integrator documentation,尤其是 installation guide与 data source configuration guide.
图 1说明了 db2 ii 昵称.sybase 现有表与存储过程之间的关系.
图 1. db2 ii 通过“现有表”访问 sybase 存储过程
注意,sybase 现有表是只读的.我们可以使用 select 语句查看存储过程的结果集,但不能让存储过程用 insert/update/delete 语句更新数据.... 下一页