码迷,mamicode.com
首页 > 数据库 > 详细

DB2创建function(二)

时间:2014-05-19 07:29:40      阅读:712      评论:0      收藏:0      [点我收藏+]

标签:blog   class   code   c   ext   color   

DB2创建function(一),介绍将function内容作为字段值,或做为一个where条件的情况。

DB2创建function(二),介绍建立返回的内容为表集合。调用示例如下

1
select * from table(GET_EFFECTIVE_USER_ID(21))--GET_EFFECTIVE_USER_ID为建立的function函数。 

 

建立的function示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CREATE FUNCTION "FAS"."GET_EFFECTIVE_USER_ID" ( "A_USER_ID" BIGINT )
  RETURNS TABLE  ( "ID" BIGINT )--注意返回的为table(col1,col2,col3) 括号里返回的表列,要一一对应
  SPECIFIC "SQL131104183947721"--唯一值
  LANGUAGE SQL
  DETERMINISTIC
  NO EXTERNAL ACTION
  READS SQL DATA
  CALLED ON NULL INPUT
  INHERIT ISOLATION LEVEL WITHOUT LOCK REQUEST
  INHERIT SPECIAL REGISTERS
RETURN--直接返回,返回的为之后查询的结果集
  SELECT CASE
          WHEN (CURR_ROLE_ID = 2 OR CURR_ROLE_ID = 7) AND USER_ID <> A_USER_ID
             THEN 0
          ELSE USER_ID
       END ID
  FROM (SELECT A.ID USER_ID, B.ROLE_ID, C.ROLE_ID CURR_ROLE_ID
          FROM FA_USER_INFO A,
               FA_USER_ROLE B,
               (SELECT ROLE_ID
                  FROM FA_USER_ROLE
                 WHERE USER_ID = A_USER_ID) C
         WHERE A.DEPARTMENT_ID IN (
                  SELECT DEPARTMENT_ID
                    FROM FA_DEPARTMENT A, FA_DEPARTMENT_INFO B
                   WHERE A.ID = B.DEPARTMENT_ID
                     AND B.PARENT_DEPARTMENT_ID = (SELECT DEPARTMENT_ID
                                                     FROM FA_USER_INFO
                                                    WHERE ID = A_USER_ID)
                  UNION
                  SELECT DEPARTMENT_ID
                    FROM FA_USER_INFO
                   WHERE ID = A_USER_ID)
           AND A.ID = B.USER_ID)
  END;--结束标记

 function返回为table的情况,需要注意return后面只能有一个查询语句。不能有类似if等逻辑判断语句

例如 create funtion get_name(var) ... return  if ... then sql...else sql...end if; end;这样的是通不过的

 

 

DB2创建function(二),布布扣,bubuko.com

DB2创建function(二)

标签:blog   class   code   c   ext   color   

原文地址:http://www.cnblogs.com/senyier/p/3732297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!