|
用户定义的函数
什么是用户定义的函数?
用户定义的函数 (UDF) 是由用户定义的在数据库引擎中运行的函数。UDF 将一组经常运行的过程语句或 SQL 语句封装到一个单元中。这样可以使代码易于管理 —— 不必重复地将常见的或复杂的逻辑包括在多个语句中,而是将逻辑单独放入一个函数中。
在 DB2 中,有很多不同类型的函数,也有很多不同编程语言可用来编写这些函数。下面的列表总结了 DB2 中不同的函数类型:
SQL 标量 : 使用 SQL 返回单个数据类型值
SQL 行 : 使用 SQL 返回一行数据
SQL 表 : 使用 SQL 返回一个 SQL 表
外部标量 : 返回单个数据类型;这种函数是使用外部编程语言编写的
外部表 : 返回一个完整的表;这种函数是使用外部编程语言编写的
OLE DB 外部表 : 用户定义的 OLE DB 外部表函数注册在数据库中,用于从 OLE DB 提供程序中访问数据
源 或 模板 : 基于另一个函数或模板
从这个列表中可以看到,这些函数基本上可以分为两大类型。更常见的类型是 内部或 SQL 函数,这些函数是使用 DB2 SQL Procedural Language (SQL PL) 的子集编写的。有些函数也可以用外部编程语言,例如 C/C++、 VB.NET 或 Java 语言来编写。这些函数被称为外部 函数。内部函数的代码存储在数据库编目表中,而外部函数则只是对文件系统中一个位置的引用,该位置存储编译好的外部编程语言代码。
SQL 函数与外部函数之间一个重要的不同之处是编译代码的位置不同。SQL 函数既可以远程编译,也可以本地编译,因为这种函数存储在数据库的编目表中。而外部函数则没有这么灵活。必须现在带有适当编译器和编译库的机器上对它进行编译,然后再传输到服务器。有时候,取决于所使用的编程语言,为了使编译后的代码能够运行,编译机器与数据库服务器上的操作系统和底层硬件需要一致。这也是 SQL 函数比外部函数更受欢迎的一个原因,对于必须支持多种操作系统和硬件配置的应用程序,这一点特别明显。
下面的列表总结了可用于编写 UDF 的编程语言:
- DB2 SQL PL(用于使用一条或多条 SQL 语句编写的函数)
- C/C++
- Java 语言
- .NET CLR 语言,例如 C#
- OLE
在接下来的两个小节中,您将学习 SQL 函数和外部函数。您还将更深入地学习基于 SQL 的函数,因为这些函数最为常见。 |