首页 > 代码库 > DB2创建function(二)
DB2创建function(二)
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;这样的是通不过的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。