zoukankan      html  css  js  c++  java
  • Oracle 函数function之返回结果集

    工作中常需要经过一段复杂逻辑处理后,得出的一个结果集。并能够将这个结果集作为一个表看待,去进行关联查询

    我一般采用建立函数function的方式来处理。

    --创建包,声明function和type
    CREATE
    OR REPLACE PACKAGE PAK_TEM AS TYPE DATE_RECORD IS RECORD --自定义类型-行(含字段及类型) ( NAME VARCHAR2 (20), VALUE VARCHAR2 (20) ); TYPE DATE_TABLE IS TABLE OF DATE_RECORD; --自定义table类 FUNCTION GET_TERM_YEARS RETURN DATE_TABLE --返回table类型 PIPELINED; --流水式 END PAK_TEM; /

    --实现包体中的function CREATE OR REPLACE PACKAGE BODY PAK_TEM AS FUNCTION GET_TERM_YEARS RETURN DATE_TABLE PIPELINED IS L_RESULT DATE_RECORD; BEGIN FOR REC IN (SELECT DISTINCT TO_CHAR (STATUS_TIME, 'YYYY') FROM TEM_TB WHERE TO_CHAR (STATUS_TIME, 'YYYY') != '0001') LOOP L_RESULT.NAME := REC.YEAR || ''; L_RESULT.VALUE := REC.YEAR; PIPE ROW (L_RESULT); --依次返回行 END LOOP; END; END PAK_TEM; /

    像查询一个表一样来操作function,使用 TABLE(自定义函数)

    SELECT * FROM  TABLE(PAK_TEM.get_term_years());

    PS:以下是定义oracle的table类型示例:

    --oracle内置类型
    TYPE STRING_TABLE IS TABLE OF VARCHAR(2000);
    
    --自定义类型(DATE_RECORD)
    TYPE DATE_RECORD IS RECORD --自定义类型-行(含字段及类型)
    (
    NAME VARCHAR2 (20),
    VALUE VARCHAR2 (20)
    );
    TYPE DATE_TABLE IS TABLE OF DATE_RECORD; --自定义table类(DATE_TABLE)
  • 相关阅读:
    netty编译报错
    idea快捷键:查找类中所有方法的快捷键
    vue修改浏览器的标题title
    django使用原生SQL的方法
    js 动态刷新页面日期
    H.264中的SPS和PPS
    CppProperties.json 参考
    FFmpeg代码导读——HEVC在RTMP中的扩展
    FFmpeg从入门到精通:SEI那些事
    FFmpeg代码导读——基础篇
  • 原文地址:https://www.cnblogs.com/senyier/p/6611952.html
Copyright © 2011-2022 走看看