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

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

 2010-02-18 15:01:14 来源:WEB开发网   
核心提示:其中:FunctionName指定要创建的外部标量函数的名称,ParameterName指定一个或多个函数参数的名称,DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第3部分(5),InputDataType指定ParameterName 所识别的参数所需的数据类型,Output

其中:

FunctionName指定要创建的外部标量函数的名称。

ParameterName指定一个或多个函数参数的名称。

InputDataType指定ParameterName 所识别的参数所需的数据类型。

OutputDataType指定函数返回的数据的类型。

SpecificName指定分配给这个UDF的特定名称。这个名称可以用来引用或删除函数;但是,不能用来调用函数。

ExternalName指定包含要注册的外部函数的可执行代码的库和函数。(稍后详细讨论这个名称的构造方式)。

Identifier指定包含要注册的外部函数的可执行代码的库,但是这只适用于用C或C++ 编写的函数。DB2 Database Manager会寻找与库同名的函数。

SPSize指定用作暂存(scratchpad)区域的内存量(以字节为单位)。

可以看到,这种形式的CREATE FUNCTION语句包含几个前面没有出现过的子句。同样,在许多情况下,这些子句传达的信息不太直观,所以我们先详细讨论这些新子句,然后再看一个示例。

EXTERNAL <NAME [ExternalName] | [Identifier]>子句指定两个信息:包含要注册的UDF的可执行代码的库,以及库中的函数。用来编写外部 UDF 体的高级编程语言决定如何提供这两个名称。例如,如果外部 UDF 是用C或C++ 编程语言开发的,那么可以以四种方式指定包含函数体的库和函数:

'LibraryName'

'LibraryName ! FunctionName'

'AbsolutePath'

'AbsolutePath ! FunctionName'

如果提供库名而不是绝对路径,那么DB2会在/sqllib/function和/sqllib/function/unfenced子目录中寻找指定的库名。(在Windows操作系统上,DB2会在LIBPATH或PATH 环境变量指定的目录路径中寻找函数)。另一方面,如果提供了绝对路径,DB2 就在指定的位置寻找库。(如果既没有提供库名,也没有提供绝对路径,DB2 就会在默认子目录中寻找与要注册的UDF 同名的库和函数)。如果提供了函数名,DB2 就会在指定的库中寻找指定的函数名;如果没有提供函数名,DB2 就会寻找与指定的库同名的函数。

LANGUAGE [C | JAVA | CLR | OLE]子句用来指定UDF 体遵守的高级编程语言约定。有四个值可用:

C:DB2 按照处理C函数的方式调用UDF。(这个UDF必须遵守由标准 ANSI C 定义的C语言调用和链接约定)。

JAVA:DB2 按照处理Java 类中的方法的方式调用UDF。

CLR:DB2 按照处理.NET 类中的方法的方式调用UDF。(目前,只对在Windows操作系统上运行的UDF 支持 LANGUAGE CLR)。

OLE:DB2 按照处理OLE 自动化对象公开的方法的方式调用UDF。(这个UDF必须遵守 OLE Automation Programmer's Reference 中描述的OLE 自动化数据类型和调用机制)。

PARAMETER STYLE [DB2GENERAL | JAVA | SQL]子句指定执行调用的应用程序在向 UDF 传递值时应该采用的参数传递方式。有三种参数传递方式:

DB2GENERAL:按照调用Java 方法的调用约定传递和返回值。(只能对用Java 编写的外部 UDF使用此方式)。

JAVA:按照符合Java语言和SQL 规范的调用约定传递和返回值。(只能对用Java 编写的外部 UDF使用此方式)。

SQL:按照符合C语言调用和链接约定、OLE 自动化对象公开的方法或.NET 对象的公共静态方法的调用约定传递和返回值。(只能对用C/C++、OLE或.NET 编写的外部 UDF使用此方式)。

<FENCED | NOT FENCED>子句指定外部 UDF 是否足够 “可靠”,可以在DB2 Database Manager操作环境的进程/内存空间中运行(NOT FENCED表示可以,FENCED表示不可以)。如果指定FENCED子句(或这两个子句都未指定),那么DB2 Database Manager 就不允许函数访问它的内部资源。

<NO SQL | CONTAINS SQL | READS SQL DATA>子句指定在外部 UDF 体中编写的SQL语句的类型。有三个值可用:

NO SQL:外部 UDF 体不包含任何 SQL,或者包含不可执行的SQL语句。(不可执行的SQL语句包括INCLUDE和WHENEVER语句等)。

CONTAINS SQL:UDF 体包含的可执行SQL语句既不读数据,也不修改数据。

READS SQL DATA:UDF 体包含的可执行SQL语句读数据,但是不修改数据。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:DB SQL Procedure

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