oracle pipelined 函数 及其替代方法
来源:互联网 发布:tightvnc linux 安装 编辑:程序博客网 时间:2024/05/22 00:22
以oracle自带scott用户下emp表为例:
1.pipelined 方式
(1)先建好record 和table ,其中table是 record类型的。
CREATE OR REPLACE PACKAGE PIPELINES_TEST IS
type emp_record is record (
EMPNO NUMBER(4) ,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
);
type emp_table is table of emp_record ;
END PIPELINES_TEST;
(2) 建函数 ,功能:根据员工编号和工作查询
CREATE OR REPLACE FUNCTION GET_EMP_RECORD_TABLE
(EMPNO NUMBER,JOB VARCHAR2)
RETURN PIPELINES_TEST.emp_table
PIPELINED IS
V_COUNT INTEGER:=1;
--
V_TABLE PIPELINES_TEST.emp_table:=PIPELINES_TEST.emp_table();
--传的函数的参数,根据参数查询
CURSOR C(EMPNO_IN NUMBER ,JOB_IN VARCHAR2) IS
SELECT * FROM EMP E WHERE E.EMPNO = EMPNO_IN AND E.JOB = JOB_IN;
BEGIN
FOR I IN C (EMPNO,JOB) LOOP
V_TABLE.EXTEND;
V_TABLE(V_COUNT):=I;
PIPE ROW (V_TABLE(V_COUNT));
V_COUNT := V_COUNT + 1;
END LOOP;
--return
End;
(3)测试
select * from table(get_emp_record_table(7369,'CLERK'));
2. pipelined 的替代方法
(1)用object对象,建立object对象
create or replace type emp_object as object(
EMPNO NUMBER(4) ,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
)
(2)建 table
create or replace type emp_otable is table of emp_object
(3)建函数 功能:根据员工编号和工作查询
CREATE OR REPLACE FUNCTION GET_EMP_OBJECT_TABLE
(EMPNO NUMBER,JOB VARCHAR2)
RETURN EMP_OTABLE
IS
V_COUNT INTEGER:=1;
--
V_LIST_TABLE EMP_OTABLE:=EMP_OTABLE();
--
CURSOR C(EMPNO_IN NUMBER ,JOB_IN VARCHAR2) IS
SELECT * FROM EMP E WHERE E.EMPNO = EMPNO_IN AND E.JOB = JOB_IN;
BEGIN
FOR I IN C (EMPNO,JOB) LOOP
V_LIST_TABLE.EXTEND;
-- 以下和(1)不同,把object对象放入table
V_LIST_TABLE(V_COUNT):=EMP_OBJECT(I.EMPNO,I.ENAME,I.JOB,I.MGR,I.HIREDATE,I.SAL,I.COMM,I.DEPTNO);
V_COUNT := V_COUNT + 1;
END LOOP;
RETURN V_LIST_TABLE;
End GET_EMP_OBJECT_TABLE;
(4)测试
select * from table(get_emp_object_table(7369,'CLERK'));
3.函数里的参数有主键,所以查询得到结果是一条记录,可以将SQL语句条件改为 “or”这样可以返回多条记录。
以上,希望对您有帮助,祝好!
- oracle pipelined 函数 及其替代方法
- oracle 管道化表函数(Pipelined Table)
- oracle管道(pipelined function)函数用法
- Oracle Pipelined Function 管道函数实例
- Oracle管道函数(Pipelined Table Function)介绍
- oracle 管道化表函数(Pipelined Table)
- Oracle管道函数(Pipelined Table Function)介绍
- Oracle pipelined
- oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法
- pipelined 函数
- Oracle的pipelined函数提升数据输出性能
- Oracle的pipelined函数提升数据输出性能
- Oracle的pipelined函数实现高性能大数据处理
- Oracle的pipelined函数实现高性能大数据处理
- oracle pipelined 自定义函数 function 返回table格式
- 【转】Oracle的pipelined函数实现高性能大数据处理
- Oracle的pipelined函数实现高性能大数据处理
- Oracle的pipelined函数提升数据输出性能
- Linux 20年, KDE 15年 和 Raspberry Pi
- 無題
- [案例分析]一汽高工离职后揭示的中国汽车业绝对内幕!(转)
- 谈谈程序在内存中的分布
- 素食健康:八种素食助你清除体内废物
- oracle pipelined 函数 及其替代方法
- redis学习文章
- c语言无声明自动链接的问题
- 指定spring配置文件的位置
- 求两个等长升序序列的中位数
- IFS日期校验与数字校验
- NoSQL数据库性能大比较:MongoDB、Redis、Tokyo Tyrant
- linux C 获取与修改IP地址
- VS,WCF(DotNet)常见错误处理系列(整理)