zoukankan      html  css  js  c++  java
  • DB2创建function(二)

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

    DB2创建function(二),介绍返回的内容为一个集合的情况。调用结果集的示例如下:

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

     建立的function示例如下:

    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;这样的是通不过的

  • 相关阅读:
    Spark性能优化指南——基础篇
    spark精华面试题
    JVM性能调优总结
    Eclipse安装Hadoop插件配置Hadoop开发环境
    CPU高的解决方法
    Flume源码分析--转载
    Flume-ng的原理和使用--转载
    spark内核源码深度剖析(2)--Spark的三种提交模式
    java调用so文件
    爬取网页数据基础
  • 原文地址:https://www.cnblogs.com/senyier/p/3732297.html
Copyright © 2011-2022 走看看