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') != '')
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)
Oracle 函数function之返回结果集的更多相关文章
- oracle创建存储过程并返回结果集(附C#调用代码)
使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我 ...
- Oracle函数function
--function /* 函数是有返回值.-只能有一个返回值. 语法 Create or replace func1(参数) Return varchar2 As Pl/sql块 Return 'J ...
- Oracle 函数 Function
定义 函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分. 函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用. 函数必须有一个返回值 ...
- oracle的存储过程如何返回结果集
CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; PROCEDURE get (p_id NUM ...
- 如何用 refcursor 返回结果集
可以通过返回 Refcursor 类型的函数,或者out 类型的函数或 procedure 返回结果集. 一.返回refcursor 类型的函数 create or replace function ...
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. ...
- oracle函数返回结果集
一.用自定义类型实现 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type type_table is table of ...
- oracle调用存储过程和函数返回结果集
在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...
随机推荐
- avalonjs 中的if else实现的几种方法
在学习avalonjs的过程中,发现模板中并没有if else这样的写法,不像tempalte ejs这些,所以总结了三种方法来实现,仅供在使用avalonjs的同学参考,主要是通过ms-if 表达式 ...
- CSS中文乱码解决方法
原文链接:http://caibaojian.com/css-unicode.html 我的CSS里面有一个content用到了中文,作用主要是在前端日报文章中显示出“网页链接”这四个字,然而打开百度 ...
- 从零开始学习html(十五)css样式设置小技巧——上
一.水平居中设置-行内元素 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> ...
- JS---函数名和变量名重名
继续作用域的问题,今天上午看了一会,下午看又看到了一个类型的题,函数名和变量名相同的问题.之前还不会觉得函数名和变量名重名了会有什么冲突.也是没有去测试过..懒了.直接贴代码: 运行之后大家猜测结果是 ...
- 结束autocad异常进程
近日在做CAD自动化数据处理,程序在服务器上运行,运行时间长了会发生异常“autocad application 已停止工作”,这个时候需要通过守护程序去重启CAD, 通过CMD命令“@taskkil ...
- jquery-jtemplates.js模板应用
jquery-jtemplates.js下载地址:https://gitee.com/nelsonlei/jquery-jtemplates.jsMoBanYingYong <!DOCTYPE ...
- 标准标签、<jsp:include>、<jsp:forward>
使用方法 标准标签在jsp页面直接编写即可,因为标准标签是JSP规范提供的,所有容器都支持. 被替代性 标准标签的许多功能都可以被JSTL与EL表达式语言所替代. 作用 标准标签可协助编写JSP时减少 ...
- mysql的几个知识点
常用命令 原则:能用可视化工具的尽量使用工具,命令行仅限于问题排查. mysql -u ACCOUNT -pPWD -h IP -P port [-D database] //连接数据库 show d ...
- Prometheus Node_exporter 之 Network Netstat TCP Linux MIPs
Network Netstat TCP Linux MIPs1. TCP Aborts / Tiemouts type: GraphUnit: shortLabel: ConnectionsTCPAb ...
- python 之socket
socket,它最初做为BSD UNIX的进程通信机制,通常被称做"套接字",如今已经成为windows和mac等其它操作系统所共同遵守的网络编程标准. socket使用ip+端口 ...