DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第3部分
2010-02-18 15:01:14 来源:WEB开发网OLE DB外部表函数
Microsoft OLE DB 是一组应用程序编程接口 (API),用于访问各种数据源。数据源由数据本身、相关联的数据库管理系统 (DBMS)、运行DBMS的平台以及用来访问此平台的网络组成。OLE DB 可以为OLE Component Object Model (COM) 环境中的所有数据源类型提供访问。
除了 CLI/ODBC提供的功能之外,OLE DB 定义的接口还可以访问无法通过 SQL 访问的数据。OLE DB 通过定义一组标准接口来促进应用程序集成,这些接口包含与语义相关的函数,应用程序可以通过这些函数访问其他应用程序的服务。接口是用于组件-对象交互的二进制标准,每个接口包含一组函数,它们为实现接口的对象(提供者)和使用接口的客户机(消费者)之间的交互定义一个“合同”。有两类 OLE DB提供者:OLE DB数据提供者,它们本身拥有数据并以行集的形式公开表格式的数据;OLE DB 服务提供者,它们本身不拥有数据,而是通过 OLE DB 接口产生和消费数据来封装某些服务。
与外部表函数一样,外部 OLE DB表函数是用高级编程语言编写的。但是,对于 OLE DB表函数,可以使用一个通用的内置 OLE DB 消费者访问任何 OLE DB提供者来访问数据;只需注册一个OLE DB表函数并作为数据源引用适当的OLE DB提供者。不需要编写额外的代码。与外部表函数一样,在联结操作、分组操作、集操作(例如UNION)和能够应用于只读视图的任何其他操作中,都可以使用外部 OLE DB表函数返回的表。例如,可以定义一个OLE DB表函数,它返回来自Microsoft Access数据库或Microsoft Exchange地址簿的表;然后创建一个报告,报告无缝地组合来自这个OLE DB表和DB2数据库的数据。
一定要注意一点:要想对DB2数据库使用OLE DB表函数,必须安装OLE DB 2.0或更高版本,这可以从Microsoft 获得。关于系统需求和特定数据源可用的OLE DB提供者的更多信息,请查阅数据源的文档。
用来注册OLE DB外部表函数的CREATE FUNCTION语句形式的基本语法见清单 8。
清单 8. 用来注册OLE DB外部表函数的CREATE FUNCTION语句
CREATE FUNCTION [FunctionName] ( <<[ParameterName]> [InputDataType] ,...> )
RETURNS TABLE ( [ColumnName] [ColumnDataType] ,... )
<SPECIFIC [SpecificName]>
EXTERNAL <NAME [ExternalName]>
LANGUAGE OLEDB
<DETERMINISTIC | NOT DETERMINISTIC>
<RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT>
<EXTERNAL ACTION | NO EXTERNAL ACTION>
<CARDINALITY [NumRows]>
其中:
FunctionName指定要创建的OLE DB外部表函数的名称。
ParameterName指定一个或多个函数参数的名称。
InputDataType指定ParameterName 所识别的参数所需的数据类型。
ColumnName指定函数返回的一列或多列的名称。
ColumnDataType指定ColumnName 所识别的列返回的数据类型。
SpecificName指定分配给这个UDF的特定名称。这个名称可以用来引用或删除函数;但是,不能用来调用函数。
ExternalName 为要注册的函数指定引用的外部表和OLE DB提供者。指定外部表和OLE DB提供者的语法如下:
'[Server]!<Rowset>'
或
'!<Rowset>![ConnectString] <!COLLATING_SEQUENCE = [N | Y]>'
其中:
Server指定由 CREATE SERVER SQL语句定义的数据源的本地名称。
Rowset指定OLE DB提供者公开的行集(表)。
ConnectString指定一个连接字符串,其中包含通过 OLE DB提供者连接数据源所需的初始化属性。此字符串由一系列关键字=值 对组成,与CLI/ODBC函数SQLDriverConnect()使用的连接字符串相似。
注意:<!COLLATING_SEQUENCE = [N | Y]>子句指定是否使用与DB2相同的比较次序访问数据源。
NumRows指定函数返回的行数的估计值。(此值只用于优化)。
因此,如果希望注册一个名为ORDERS()的OLE DB外部表函数,从一个Microsoft Access数据库获取订单信息,那么可以执行清单 9 所示的CREATE FUNCTION语句:
清单 9. OLE DB外部表函数
CREATE FUNCTION orders()
RETURNS TABLE (orderid INTEGER,
customerid CHAR(5),
employeeid INTEGER,
orderdate TIMESTAMP,
requiredate TIMESTAMP,
shipdate TIMESTAMP,
shipcharges DECIMAL(19,4))
LANGUAGE OLEDB
EXTERNAL NAME '!orders!Provider=Microsoft.Jet.OLEDB.3.51;
Data Source=c:sqllibsamplesoledbnwind.mdb'
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接