oracle 使用临时表返回数据表
来源:互联网 发布:高中知识点汇总软件 编辑:程序博客网 时间:2024/05/16 14:59
找了很多关于存储过程返回数据表的文章,发现oracle和sqlserver有很大的区别,sqlserver可以直接在存储过程返回数据表,而oracle的存储过程不能直接返回数据表,最多就返回数据表指针,如果你想在sql里看到返回的内容,还需要写一个循环去读取里面的内容。这里我写了一个管道表函数去返回我想要的内容。
备注:DWXXTreeNode:单位信息树节点(相当于一行)
DWXXTree:单位信息树(相当于表)
dwxx:单位信息表(数据表)
这里用到了 存储过程返回数据表、管道表函数的内容,网上很多,这里就不介绍了。 需要注意的是,oracle是区分大小写的,所以DWXXTreeNode 、DWXXTree使用的时候必须大小写一致。
写这篇东西只是想将存储过程返回数据表的内容补充完整,因为有时候我只是想在pl/sql里面看内容,不是输出到外面的。写完package之后,我觉得package像java的类一样,有属性、方法,body里面进行实现。
调用:select * from table(PG_dwxxTree.getTree(0));
--树节点,用于函数返回create or replace type DWXXTreeNode is object( dwdm varchar2(15),--单位代码 dmd number(2)--层数);create or replace type DWXXTree is table of DWXXTreeNode;--包定义CREATE OR REPLACE PACKAGE PG_dwxxTree IS type DataTable IS REF CURSOR ; type TreeNode is record ( dwdm varchar2(15), dmd number(2) ); procedure createTree(dt OUT DataTable,fz in number);--条件:dt:数据表指针,fz:分组 function getTree(fz in number) return DWXXTree pipelined;END PG_dwxxTree;--包体,用于生成单位树CREATE OR REPLACE PACKAGE BODY PG_dwxxTree IS procedure createTree(dt OUT DataTable,fz in number) IS BEGIN --具体实现可以在这里写,也可以使用临时表 OPEN dt FOR SELECT dwdm,dmd FROM dwxx where rownum < 5; END createTree; --调用存储过程返回结果 function getTree(fz in number) return dwxxTree pipelined is obj_dwxxTreeNode DWXXTreeNode; tb_cursor PG_dwxxTree.DataTable; item PG_dwxxTree.TreeNode; begin createTree(tb_cursor,fz); loop fetch tb_cursor into item; exit when tb_cursor%notfound; dbms_output.put_line(item.dwdm || ' ' ||item.dmd || ' '); obj_dwxxTreeNode := dwxxTreeNode(item.dwdm,item.dmd); pipe row(obj_dwxxTreeNode); end loop; return; end getTree; end PG_dwxxTree;
pl/sql代码如下:
0 0
- oracle 使用临时表返回数据表
- oracle 临时表空间和数据表空间
- Oracle 临时表空间 数据表空间
- oracle 临时表空间和数据表空间
- 使用sys_refcursor和临时表返回oracle结果集
- Oracle临时表使用
- Oracle临时表使用
- oracle创建临时表空间和数据表空间以及删除
- 使用Cursorgetprop函数获得临时表的数据表名称
- Oracle临时表 使用补充
- 使用oracle临时表有感
- oracle数据库使用临时表
- ORACLE临时表的使用
- Oracle临时表的使用
- postgresql 创建数据表。临时表
- Oracle 临时表空间使用注意
- Hibernate 中使用oracle临时表
- oracle使用临时表实现复杂报表
- SAP虚拟机的使用方法
- 利用ROWID更新表的实验
- 离乡
- DLUT 1184: 电影院里的对话(线段树)
- 黑马程序员------------------循环
- oracle 使用临时表返回数据表
- ViewPager使用教程
- 重构
- 伟东山学习--1--内核makefile,启动过程.
- 使用SQL语句清空数据库所有表的数据
- BASH PS1 参数详解
- PL/SQL的数据类型
- Android - 如何将两个/多个应用放到一个进程中去?
- 视频小知道