WEB开发网
开发学院数据库DB2 DB2 9.5 SQL Procedure Developer 认证考试 735 准... 阅读

DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第3部分

 2010-02-18 15:01:14 来源:WEB开发网   
核心提示:标量函数通常用来执行基本的数学计算和操作字符串,聚合函数聚合函数(也称为列函数)也返回一个标量值,DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第3部分(2),这个值是一组输入值的计算结果,通常情况下,一般情况下,多个函数可以使用相同的函数名,这组输入值来自表中的一列,或来自V

标量函数通常用来执行基本的数学计算和操作字符串。

聚合函数

聚合函数(也称为列函数)也返回一个标量值,这个值是一组输入值的计算结果。通常情况下,这组输入值来自表中的一列,或来自VALUES子句中的元组。聚合函数的示例包括内置函数MAX()和MIN()。

表函数

表函数向引用它的SQL语句返回一个表。只能在SELECT语句的FROM子句中引用表函数。但是,在能够应用于只读视图的任何操作(例如,联结、分组操作以及 UNION和INTERSECT 等集操作)中,都可以使用表函数返回的表。

表函数可以发出操作系统调用、从文件中读取数据以及通过网络访问数据。另外,SQL表函数还可以用来封装修改表数据的SQL语句。(外部表函数不能封装SQL语句)。但是,与标量函数一样,在表函数中不支持事务管理。因此,在表函数体中无法执行提交和回滚操作。

表函数通常用来封装复杂但常用的子查询,以及为非关系数据提供表格式接口。例如,用户定义的外部表函数可以读取电子表格并生成一个数据表,然后可以把生成的数据表直接插入基表或者通过查询访问它。

行函数

行函数返回单一表行。行函数只能供用户定义的结构化类型使用;不能单独使用行函数,也不能在抽象数据类型的上下文之外的SQL语句中使用。

通常,行函数用于把结构化类型属性映射到由内置数据类型值组成的行,以便能够在查询或SQL操作中访问结构化类型属性。例如,假设数据库有一个用户定义的结构化数据类型'Manager',此类型扩展另一个结构化数据类型'Employee',其中包含 'Employee'和'Manager' 特有的属性。如果希望在查询中引用属性值,那么可以创建一个行函数,它把属性值转换为查询可以引用的数据行。

用户定义的函数

UDF 是用来扩展和增强 DB2 内置函数提供的功能的特殊对象。顾名思义,UDF 是由具有适当权力和/或特权的数据库用户创建的。与DB2 内置函数不同,UDF 可以使用系统调用和DB2的管理API,因此能够在系统、应用程序和数据库之间进行更多的协作。可以创建五种 UDF:

有源(或模板)

SQL 标量、表或行

外部标量

外部表

OLE DB外部表

通过执行CREATE FUNCTION SQL语句创建(或重新创建)UDF。这个语句有几种形式,应该使用的形式由要创建的函数的类型决定。

有源(或模板)函数

有源函数是从一个已经向数据库注册的函数(称为源函数)构造出的UDF。有源函数在本质上可以是标量、列或表函数,还可以用它们覆盖 +、-、*和/ 等操作符。在调用有源函数时,传递给它的所有参数被转换为底层源函数所需的数据类型,然后执行源函数本身。执行完成时,源函数对产生的结果执行必要的转换,并把控制返回给调用UDF的SQL语句。有源函数最常见的用途是,让用户定义的不同数据类型有选择地继承内置数据类型的某些语义。

通常,如果以现有函数作为源的UDF的目的是向用户定义数据类型提供该函数的支持,那么UDF和有源函数使用相同的名称。这使用户能够用一个用户定义的不同类型调用相同的函数,而不需要额外的函数定义。一般情况下,多个函数可以使用相同的函数名,只要每个函数的签名都有些差异即可。

用来创建有源函数的CREATE FUNCTION语句形式的基本语法如下:

清单 1. 用来创建有源函数的CREATE FUNCTION语句

CREATE FUNCTION [FunctionName] ( <<[ParameterName]> [InputDataType] ,...> )
  RETURNS [OutputDataType]
  <SPECIFIC [SpecificName]>
  SOURCE [SourceFunction] <([DataType] ,...)>
  <AS TEMPLATE>

上一页  1 2 3 4 5 6 7  下一页

Tags:DB SQL Procedure

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接