Oracle利用存储过程返回结果集开发报表

在Oracle开发过程中,经常会遇到各种形式的报表展示,有些报表用sql语句直接是写不出来的,需要程序与sql配合着实现,但是这样写出来的报表查询速度慢,而且不利

Bolt.new Bolt.new

Bolt.new是一个免费的AI全栈开发工具

Bolt.new 466 查看详情 Bolt.new

这里重点就是v_sql变量,将所有需要的逻辑关系写好,整体赋值给v_sql,最后打开输出游标(ds)即可。

下面是一个完整的Oracle存储过程返回结果集的例子,大家可以参考:

先看一下最终效果:

Oracle利用存储过程返回结果集开发报表

这里同时也实现了动态列、层级展示的效果。

SQL代码:

procedure pro_tj_getDate_normal_year(v_sDate varchar2,ds out ds_cur) asd_date date;d_eDate date;n_diff number :=0; –年份差n_item number :=0; –是否保存有指标v_sql varchar2(10000);v_sql_t varchar2(5000);v_sql_where varchar2(5000);v_itemCode varchar2(100);–指标类别n_i number;v_fields varchar2(1000);v_year varchar(5); begin–计算年份差select substr(v_eDate,1,4) – substr(v_sDate,1,4)into n_difffrom dual;–判断当前用户在所选公司是否保存指标select count(*) into n_item from BP_J_TJZH_ITEM_LIST lwhere l.org_code=v_complany and l.work_code=v_user;if n_item>0 thenv_sql_where := ‘ and i.item_code in(select l.item_code from BP_J_TJZH_ITEM_LIST lwhere l.org_code=”’|| v_complany || ”’ and l.work_code=”’ || v_user || ”’)’;elsev_sql_where := ”;end if;–判断指标类别是否为空if v_type=” or v_type is null thenv_itemCode := v_complany || ‘-0-000001′;elsev_itemCode := v_type;end if;if n_diff0 thenv_sql := v_sql||’left join (select t.item_code_prefix,t.data_value from (select n.data_date,n.item_code_prefix,n.data_value,row_number() over(partition by to_char(n.data_date,”yyyy”),n.item_code_prefix order by n.data_date desc) rnfrom bp_j_stat_ntz nwhere n.org_code=”’||v_complany||”’and to_char(n.data_date,”yyyy”) = ”’||to_char(d_date,’yyyy’) ||”’) t where t.rn=1) t’||n_i||’on i.item_code_prefix=t’||n_i||’.item_code_prefix’;elsev_sql := v_sql||’left join (select t.item_code_prefix,t.data_value from (select n.data_date,n.item_code_prefix,n.data_value,row_number() over(partition by to_char(n.data_date,”yyyy-mm”),n.item_code_prefix order by n.data_date desc) rnfrom bp_j_stat_ntz nwhere n.org_code=”’||v_complany||”’and to_char(n.data_date,”yyyy-mm”) = ”’||to_char(d_date,’yyyy-mm’) ||”’) t where t.rn=1) t’||n_i||’on i.item_code_prefix=t’||n_i||’.item_code_prefix’;end if;v_fields := v_fields || ‘t’ || n_i || ‘.data_value as “‘||v_year||'”,’;n_i := n_i+1;d_date :=add_months(d_date,12);end loop;v_sql_t := ‘select i.item_code_prefix,lpad(” ”,2 * level – 2) || i.item_name as item_name,u.unit_name,’||v_fields||’nullfrom bp_c_stat_item ileft join bp_c_measure_unit uon i.unit_id=u.unit_id’;v_sql := v_sql_t || v_sql || ‘where i.is_use=”Y” and i.org_code=”’ || v_complany || ”’ ‘ || v_sql_where ||’start with i.item_code_prefix = ”’||v_itemCode || ”’connect by prior i.item_code_prefix=i.parent_item_codeorder SIBLINGS BY i.order_by asc’;end if;–打开游标open ds for v_sql;end pro_tj_getDate_normal_year;

这个sql实现了根据动态日期展示指标数据,很实用哦。如果大家有其他更好的办法可以一起讨论。

原文地址:

本文出自 “IT独行者” 博客,,请务必保留此出处

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/903245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 21:41:26
下一篇 2025年11月28日 21:44:24

相关推荐

  • 五种高效的Ajax框架,助您快速开发

    高效开发利器:掌握这五个常用的Ajax框架 引言:在当今互联网时代,Web开发已经成为人们最常用的软件开发方法之一。而Ajax技术的出现,更是给Web开发带来了一种全新的交互方式。Ajax(Asynchronous JavaScript and XML)是一种基于现有的Web标准的开发技术,它可以使…

    2025年12月24日
    000
  • 五款必备的CSS框架,前端开发人员不容错过!

    前端开发必备!五种常用的CSS框架推荐 在现如今的互联网时代,网页设计和开发已经成为了一种必备技能。而作为前端开发的重要组成部分之一,CSS框架的选择和使用对于网页的美观和用户体验起着至关重要的作用。本文将为大家推荐五种常用的CSS框架,帮助大家在前端开发中事半功倍。 一、Bootstrap Boo…

    2025年12月24日
    000
  • CSS属性实现动态背景效果的技巧

    CSS属性实现动态背景效果的技巧 背景是网页设计中一个重要的元素,通过合理的背景设计可以增加网页的视觉效果,实现更好的用户体验。CSS提供了丰富的属性和技巧,可以实现各种动态背景效果。本文将具体介绍一些CSS属性和代码示例,帮助读者了解如何运用这些技巧。 1.渐变背景 渐变背景可以给网页增加柔和的过…

    2025年12月24日
    000
  • 如何使用CSS3属性实现网页元素的动态位置变换?

    如何使用CSS3属性实现网页元素的动态位置变换? 随着互联网的发展,网页设计变得越来越重要。为了吸引用户的注意力并提高用户体验,动态元素的运用越来越普遍。在网页设计中,CSS3是一个非常有用的工具,它提供了许多属性来实现网页元素的动态位置变换。本文将介绍一些常用的CSS3属性,并提供相应的代码示例。…

    2025年12月24日 好文分享
    000
  • css实现鼠标移入移出动态效果

    这篇文章主要介绍了关于css实现鼠标移入移出动态效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 知识点:transform-origin 兼容性:IE10以上 p { position: absolute; width: 200px; height: 60px; text-ali…

    好文分享 2025年12月24日
    000
  • CSS教程(三)伪类——动态链接

    伪类可以看做是一种特殊的类选择符,是能被支持css的浏览器自动所识别的特殊选择符。它的最大的用处就是可以对链接在不同状态下定义不同的样式效果。 1.  语法 伪类的语法是在原有的语法里加上一个伪类(pseudo-class):selector:pseudo-class {property: valu…

    2025年12月23日
    000
  • 如何在html编辑代码_在HTML页面内编辑和运行代码块【代码】

    可在HTML页面内嵌入可交互代码编辑与执行功能,具体包括:一、CodeMirror+Function构造器实现JS即时运行;二、Monaco Editor配合Web Worker与vm2沙箱安全执行;三、iframe隔离预览HTML/CSS/JS;四、BrowserFS模拟本地文件系统。 如果您希望…

    2025年12月23日
    000
  • 手机怎么运行html5游戏_手机运行html5游戏步骤【指南】

    手机运行HTML5游戏无需安装,只需用现代浏览器打开网页即可。首先确保使用Chrome、Safari或Firefox等支持HTML5的最新浏览器;然后通过官网、二维码或分享链接获取游戏;接着在浏览器中输入网址或点击链接,等待加载后点击屏幕开始游戏;为提升体验,建议连接Wi-Fi、关闭后台应用、横屏操…

    2025年12月23日
    200
  • Java JDBC中SQL INSERT语句的常见语法错误及修复指南

    本文旨在解决java jdbc应用中常见的sql `insert`语句语法错误,特别是因缺少括号而导致的错误。我们将深入分析错误信息,指出问题根源,并提供正确的sql语句范例及java jdbc `preparedstatement`的使用方法。文章还将涵盖jdbc数据库操作的最佳实践、错误处理和调…

    2025年12月23日
    000
  • java怎么编译运行.html_java编译运行.html方法【教程】

    Java程序的编译运行与HTML无关,需使用JDK。1. 编写HelloWorld.java文件;2. 命令行执行javac HelloWorld.java生成.class文件;3. 执行java HelloWorld运行程序。注意:HTML是网页标记语言,不能直接运行Java代码,勿将二者混淆。确…

    2025年12月23日
    000
  • html文档中含有java怎么运行_html含java运行方法【教程】

    现代浏览器不支持Java Applet,推荐通过JavaScript调用Java后端服务或使用WebAssembly运行Java代码。 如果您在HTML文档中嵌入了Java代码,但发现无法正常运行,这通常是因为现代浏览器不再支持Java小程序(Applet)或相关插件。以下是几种实现HTML中Jav…

    2025年12月23日
    000
  • 怎么运行html的applet小程序_运行html applet小程序步骤【指南】

    现代浏览器已不再默认支持Java Applet,需通过安装JRE、启用插件、使用支持NPAPI的旧版浏览器(如Firefox 52.9 ESR)、调整Java安全级别至中,并将网站添加到例外站点列表方可运行。 如果您在尝试运行HTML中的Applet小程序时遇到问题,可能是因为现代浏览器已不再默认支…

    2025年12月23日
    000
  • 怎么在线运行html代码_在线运行html代码方法【教程】

    可通过在线工具直接运行HTML代码,无需本地配置:①使用jsfiddle.net或codepen.io等在线编辑器实时编写并预览;②在replit.com创建HTML项目,支持完整文件结构与多人协作;③利用浏览器F12开发者工具临时编辑HTML片段即时查看效果;④通过codesandbox.io或s…

    2025年12月23日
    000
  • JavaEE的html怎么运行_JavaEE运行html步骤【指南】

    答案:HTML在JavaEE中作为静态资源通过服务器运行。需配置JDK、IDE和应用服务器,创建Dynamic Web Project,将HTML文件放入WebContent目录,部署项目到Tomcat等服务器,启动后通过http://localhost:8080/项目名/文件名访问,确保路径正确即…

    2025年12月23日
    000
  • 在jQuery Selectivity插件中动态添加新选项的教程

    本教程详细介绍了如何在jQuery Selectivity插件中动态添加新选项,特别是当数据来源于服务器端时。文章强调了使用Selectivity提供的`add`方法而非直接DOM操作,并指导如何将服务器端数据正确序列化为JSON格式,以便JavaScript能够顺利处理并更新下拉列表,同时提醒了在…

    2025年12月23日
    000
  • html网页优化工具_html网页优化网页版入口

    html网页优化网页版入口是https://www.tinywebtools.com/html-minifier,该平台提供在线HTML压缩、格式化、语法检测及自定义配置功能,支持浏览器端处理、实时对比、快捷键操作与一键复制,兼容HTML5、SVG等复杂结构,并可批量处理代码或通过API集成至自动化…

    2025年12月23日
    000
  • 安全高效地更新数据库数值:使用PHP预处理语句实现增量更新

    本文将指导您如何安全且高效地在数据库中实现数值的增量更新。我们将探讨直接在SQL中进行算术运算的方法,并重点介绍如何利用PHP的MySQLi预处理语句来防止SQL注入攻击,确保数据操作的安全性与准确性,同时提供具体的代码示例和实践指导。 在Web应用开发中,经常会遇到需要更新数据库中某个数值字段,使…

    2025年12月23日
    000
  • PHP数据库安全更新:实现数值累加与防范SQL注入

    本文详细阐述如何在php中安全、高效地实现数据库字段的数值累加更新操作。通过对比潜在的sql注入风险和错误的更新逻辑,重点介绍了使用`mysqli`预处理语句(prepared statements)作为最佳实践,以确保数据安全、提升代码可维护性,并提供了清晰的代码示例及解释。 1. 数据库数值累加…

    2025年12月23日
    000
  • PHP MySQLi:安全地对数据库字段进行累加更新

    本教程旨在指导开发者如何安全且正确地更新数据库中已存在的数值型字段,通过将新提交的值累加到原有值上。我们将重点介绍使用PHP MySQLi的预处理语句(Prepared Statements)来执行此操作,这不仅能确保数据库更新的逻辑正确性,还能有效防范SQL注入等安全漏洞,提升应用的数据完整性和安…

    2025年12月23日
    000
  • PHP与MySQL:安全地更新数据库中现有数值(累加操作)

    本教程详细讲解如何使用php和mysql安全地更新数据库中已有的数值字段,通过将新提交的值累加到现有值上。我们将重点介绍如何利用sql的算术操作以及php的预处理语句(prepared statements)来防止sql注入,确保数据操作的准确性和安全性。 数据库数值字段的累加更新 在Web应用开发…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信