DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第3部分
2010-02-18 15:01:14 来源:WEB开发网其中:
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语句读数据,但是不修改数据。
- ››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表' (数...
更多精彩
赞助商链接