热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle使用临时表返回数据表

oracle使用临时表返回数据表找了很多关于存储过程返回数据表的文章,发现oracle和sqlserver有很大的区别,sqlserver可以直接在存储过程返回数据表,而oracle的存储过程不能直接返回数据表,最多就返回数据表指针...SyntaxHighlighter.all

oracle使用临时表返回数据表
 
 找了很多关于存储过程返回数据表的文章,发现oracle和sqlserver有很大的区别,sqlserver可以直接在存储过程返回数据表,而oracle的存储过程不能直接返回数据表,最多就返回数据表指针,如果你想在sql里看到返回的内容,还需要写一个循环去读取里面的内容。这里我写了一个管道表函数去返回我想要的内容。
 
备注:DWXXTreeNode:单位信息树节点(相当于一行)
 
DWXXTree:单位信息树(相当于表)
  www.2cto.com  
dwxx:单位信息表(数据表)
 
这里用到了 存储过程返回数据表、管道表函数的内容,网上很多,这里就不介绍了。 需要注意的是,oracle是区分大小写的,所以DWXXTreeNode 、DWXXTree使用的时候必须大小写一致。
 
写这篇东西只是想将存储过程返回数据表的内容补充完整,因为有时候我只是想在pl/sql里面看内容,不是输出到外面的。写完package之后,我觉得package像java的类一样,有属性、方法,body里面进行实现。
 
调用:select * from table(PG_dwxxTree.getTree(0));
 
pl/sql代码如下:
 
[sql] 
--树节点,用于函数返回  
create or replace type DWXXTreeNode is object  
(  
  dwdm varchar2(15),--单位代码  
  dmd number(2)--层数  
);  
create or replace type DWXXTree is table of DWXXTreeNode;  
    www.2cto.com  
--包定义  
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;  
    www.2cto.com  
      --调用存储过程返回结果  
     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 || &#39; &#39; ||item.dmd || &#39; &#39;);  
               obj_dwxxTreeNode :=  dwxxTreeNode(item.dwdm,item.dmd);  
               pipe   row(obj_dwxxTreeNode);  
           end loop;  
  
           return;  
      end getTree;      
end PG_dwxxTree;  

推荐阅读
  • 大数据SQL优化:全面解析数据倾斜解决方案
    本文深入探讨了大数据SQL优化中的数据倾斜问题,提供了多种解决策略和实际案例,旨在帮助读者理解和应对这一常见挑战。 ... [详细]
  • 本文探讨了一种有效的方法来检查数据库中是否已存在特定的用户名,如果不存在,则将其添加到数据库中。代码示例展示了如何使用SQL查询和C#编程实现这一功能。 ... [详细]
  • 使用C#向mysql的date字段插入空值时,报错,怎么办?
    使用的是ado.net的参数化查询方式,不知道是怎么回事? ... [详细]
  • MySQL磁盘空间满的解决方案及预防措施
    本文介绍了一个案例,其中MySQL服务器的磁盘使用率达到100%,仅剩余几十兆空间。通过一系列操作,包括备份数据库、删除实例、删除数据库表以及重启MySQL服务,但未能有效释放磁盘空间。文章进一步探讨了可能的原因和最终解决问题的方法。 ... [详细]
  • 本文详细对比了MySQL中的InnoDB与MyISAM两种存储引擎,从性能、事务处理能力、锁机制等多个维度进行了深入探讨,旨在为数据库设计者提供选择依据。 ... [详细]
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • PHP 实现实时汇率查询接口
    本文介绍如何使用PHP构建一个实时汇率查询接口,解决网站因数据源限制而无法获取最新汇率的问题。文章将详细讲解从选择合适的数据源到实现接口的具体步骤。 ... [详细]
  • 本文介绍了如何使用PHP进行SQL Server 2010数据库的分页查询,包括设置每页显示的记录数和当前页码,并通过SQL语句实现数据的分页展示。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • 本文提供最新的CUUG OCP 071考试题库,包含70道题目,旨在帮助考生更好地准备Oracle Certified Professional (OCP) 考试。 ... [详细]
  • 查询技巧:获取数据库中第二高薪水的方法
    本文将介绍如何使用SQL查询语句从Employee表中提取出第二高的薪水(Salary)。例如,在给定的Employee表中,通过SQL查询可以正确返回200作为第二高的薪水。 ... [详细]
  • 本文探讨了如何利用Pandas库在Python中执行复杂的多条件左连接操作,特别是当需要基于不同列的不同键进行连接时的方法。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
author-avatar
艳斐儿M
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有