DB2中创建和使用SQL用户定义函数

数据库
我们可以创建用户定义函数来扩展内置的 DB2 函数。例如,创建计算复杂的算术表达式或操作字符串的函数,然后在 SQL 语句中像对待任何现有的内置函数一样引用这些函数。

本文将为您详细介绍DB2数据库中创建用户自定义行数,用以扩展扩展内置的 DB2 函数的方法,供您参考,希望对您有所帮助。

可以创建用户定义函数来扩展内置的 DB2 函数。例如,创建计算复杂的算术表达式或操作字符串的函数,然后在 SQL 语句中像对待任何现有的内置函数一样引用这些函数。

假设需要一个返回圆的面积的函数,这个函数的输入参数是圆的半径。内置的 DB2 函数中没有这样的函数,但是可以创建一个用户定义的 SQL 标量函数 来执行这个任务,可以在 SQL 语句中支持标量函数的任何地方引用这个函数。 CREATE function ca (r DOUBLE)
            RETURNS DOUBLE
            LANGUAGE SQL
            CONTAINS SQL
            NO EXTERNAL ACTION
            DETERMINISTIC
            RETURN 3.14159 * (r * r);
            
NO EXTERNAL ACTION 子句指出这个函数不会对数据库管理程序不管理的对象的状态有任何影响。DETERMINISTIC 关键字指出这个函数对于给定的参数值总是返回相同的结果。在查询优化期间会使用这个信息。执行这个函数的简便方法是在一个查询中引用它。在下面的示例中,针对 SYSIBM.SYSDUMMY1 编目视图(其中只有一行)执行这个查询(可以选择任意的查询目标): db2 SELECT ca(96.8) AS area FROM sysibm.sysdummy1
            AREA
            ------------------------
            +2.94374522816000E+004
            1 record(s) selected.
            
还可以创建用户定义的表函数,它接受零个或更多的输入参数并以表的形式返回数据。表函数只能用在 SQL 语句的 FROM 子句中。 #p#

假设需要一个返回拥有特定工作的所有职员的姓名和职员号的函数,函数的参数是这个工作的头衔。下面是执行这个任务的表函数示例: CREATE FUNCTION jobemployees (job VARCHAR(8))
            RETURNS TABLE (
            empno CHAR(6),
            firstname VARCHAR(12),
            lastname VARCHAR(15)
            )
            LANGUAGE SQL
            READS SQL DATA
            NO EXTERNAL ACTION
            DETERMINISTIC
            RETURN
            SELECT empno, firstnme, lastname
            FROM employee
            WHERE employee.job = jobemployees.job;
            
以下查询在 FROM 子句中引用这个新的表函数,并传递工作头衔 ‘CLERK’ 作为函数的参数。语法要求用关键字 AS 引入一个相关名称: db2 SELECT * FROM TABLE(jobemployees('CLERK')) AS clerk
            EMPNO  FIRSTNAME    LASTNAME
            ------ ------------ ---------------
            000120 SEAN         O'CONNELL
            000230 JAMES        JEFFERSON
            000240 SALVATORE    MARINO
            000250 DANIEL       SMITH
            000260 SYBIL        JOHNSON
            000270 MARIA        PEREZ
            6 record(s) selected.
            

 


 

责任编辑:段燃 来源: 互联网
相关推荐

2010-11-02 14:08:29

DB2创建用户

2010-09-30 16:00:40

DB2动态SQL

2010-08-25 13:46:00

DB2函数日期

2010-11-02 11:36:10

DB2索引创建

2010-09-30 14:48:26

DB2查询

2010-09-01 09:40:33

DB2函数OLAP

2010-11-02 13:40:34

DB2函数调用

2010-01-26 10:36:22

DB2

2010-11-03 16:25:51

DB2列函数

2010-11-02 14:29:11

DB2用户组

2011-04-15 13:12:08

DB2游标

2010-09-06 15:13:05

DB2

2010-11-04 15:39:40

DB2 SQL语句

2010-02-03 09:16:01

DB2

2010-11-04 15:20:33

DB2日期函数

2010-09-30 13:27:09

DB2游标

2010-09-07 08:27:17

DB2常用函数

2010-11-02 14:45:12

DB2创建表空间

2010-08-16 17:07:43

DB2 trc

2010-08-10 15:30:21

点赞
收藏

51CTO技术栈公众号