`

ORACLE 的FOR循环、游标、时间值函数、转换函数题目

阅读更多

 

 题目:假如输入变量是cur_date  varchar2
    统计以下变量:
        今天的产量  cur_date
        昨天的产量  to_char(to_date(cur_date,'yyyymmdd')-1,'yyyymmdd')
        本月的产量  substr(cur_date,1,6)
        本年的产量  substr(cur_date,1,4)
        去年同期的产量 to_char(add_months(to_date(cur_date,'yyyymmdd'),-12),'yyyymmdd')
    1)用基本SQL来实现

    用FOR循环游标来实现
    考核的知识点:FOR循环,游标,时间值函数,转换函数,DECODE/CASE用法

这个题还需各位高手。

参考答案如下:

select *
    from factory
    select to_char(to_date('20080602','yyyymmdd') -1,'yyyymmdd')
    from dual  
    select to_char(add_months(to_date(f.cur_date,'yyyymmdd'),-12),'yyyymmdd')
    from dual
    create table temp
    as  
    select cur_date,(select 
                     sum(case when cur_date=f.cur_date then cur_perout
                     else 0
                     end)
                     from factory) a,
                     (select 
                     sum(case when cur_date=to_char(to_date(f.cur_date,'yyyymmdd') -1,'yyyymmdd')
                     then cur_perout else 0
                     end)
                     from factory) b ,
                     (select 
                     sum(case when substr(cur_date,1,6)=substr(f.cur_date,1,6) then cur_perout
                     else 0
                     end)
                     from factory) c,
                     (select
                      sum(case when substr(cur_date,1,4)=substr(f.cur_date,1,4) then cur_perout
                      else 0
                     end)
                     from factory) d,
                     (select
                     sum(case when cur_date=to_char(add_months(to_date(f.cur_date,'yyyymmdd'),-12),'yyyymmdd')
                        then cur_perout else 0
                     end)
                     from factory) e
                     
    from factory f
    where rownum <1
   -- where cur_date='20080602';
begin 
  for temstr in (select * from factory) loop
  insert into temp
  select temstr.cur_date,--游标(不带字段/常量)
         sum(case when cur_date=temstr.cur_date then cur_perout
             else 0
             end),
         sum(case when cur_date=to_char(to_date(temstr.cur_date,'yyyymmdd') -1,'yyyymmdd') 
         then cur_perout
             else 0
             end),
         sum(case when substr(cur_date,1,6)=substr(temstr.cur_date,1,6) then cur_perout
             else 0
             end),
         sum(case when substr(cur_date,1,4)=substr(temstr.cur_date,1,4) then cur_perout
             else 0
             end),
         sum(case when cur_date=to_char(add_months(to_date(temstr.cur_date,'yyyymmdd'),-12),'yyyymmdd') then cur_perout
             else 0
             end)
         from factory; 
  end loop;
end;
  select * from temp
    

 

1
5
分享到:
评论

相关推荐

    Oracle存储过程、游标、函数的详解

    ### Oracle存储过程、游标、函数的详解 #### 一、概述 在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作...

    oracle函数触发器游标等几个小例子

    2. **Oracle游标**:游标允许我们处理查询结果集中的每一行数据。在`oracle游标.txt`中,你可以学习到如何声明、打开、读取和关闭游标。游标在处理大量数据时非常有用,特别是在需要逐行处理或循环遍历结果集的情况...

    Oracle函数游标以及包的定义

    该文件讲解了Oracle数据库中函数游标的创建以及包的定义,对数据库有更深层次的了解

    oracle10g 函数返回游标类型

    其中,一个重要的功能是能够创建返回游标类型的函数,这种函数允许用户从数据库中检索并返回一组记录,而非单一值。这在处理大量数据或需要遍历整个结果集的场景下极为有用。 ### 标题:“oracle10g 函数返回游标...

    oracle循环游标

    在Oracle数据库中,循环游标是一种非常重要的编程技术,它允许开发者通过循环结构来处理查询结果集中的每一行数据。这种技术在处理大量数据时尤为有用,因为它可以逐行访问数据,而无需一次性将所有数据加载到内存中...

    oracle解决游标多维度循环查询效率过低方案

    多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率

    oracle 的函数、存储过程、游标、简单实例

    Oracle提供了丰富的内置函数,如数学函数(如ROUND、TRUNC)、字符串函数(如SUBSTR、INSTR)和日期时间函数(如SYSDATE、ADD_MONTHS)。自定义函数也可以通过PL/SQL语言创建,以满足特定需求。 其次,**存储过程**...

    Oracle游标视图和自定义函数

    ### Oracle游标、视图和自定义函数 #### 1. 游标 **1.1 游标的优势和类型** 在数据库应用开发过程中,游标作为一种强大的工具,为开发者提供了一种处理从表中检索出的数据的有效方法,特别是在需要逐条处理数据...

    oracle存储过程、游标、函数

    **二、Oracle游标** 游标(Cursor)是数据库系统中用于处理单条记录的一种机制。在Oracle中,游标允许我们遍历查询结果集,一次处理一条记录。游标的使用场景包括循环处理结果集、有条件地更新或删除数据等。 1. **...

    Oracle函数返回游标的方法及应用.pdf

    创建返回游标函数的基本步骤如下: 1. 定义函数:声明函数的名称、输入参数(如单位名称和日期),并指定返回类型为游标。 2. 执行查询:在函数体内编写SQL查询,查询满足条件的数据。 3. 创建游标:使用`CURSOR`...

    同步每个人的时长的oracle proc,游标的使用,函数的使用

    根据给定的信息,本文将详细解释Oracle中的存储过程(Procedure)、游标(Cursor)以及函数(Function)在同步员工加班时间的应用。 ### 一、Oracle 存储过程(Procedure) 存储过程是预先编译并存储在数据库...

    Oracle中的游标和函数详解

    Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构;可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理。 游标并不是一个数据库对象,只是存留在内存中。 操作步骤:  声明游标  ...

    Oracle 游标循环

    综上所述,`Loop`循环、`While`循环以及`For`循环都是处理Oracle游标数据的有效方式,但各有特点: - `Loop`循环结构清晰,易于理解,适用于各种复杂逻辑的实现。 - `While`循环相比`Loop`更简洁,但需要手动管理...

    oracle 管道函数+动态游标

    根据提供的Oracle管道函数和动态游标的代码片段及描述,我们可以深入了解其背后的技术要点与实现细节。下面将逐一解析这些知识点。 ### Oracle管道函数 管道函数(Pipe-lined Function)是Oracle中一种特殊类型的...

    Oracle 游标使用大全

    Oracle游标是数据库管理系统中的一种数据处理机制,它允许用户按需逐行处理查询结果,而不是一次性加载所有数据。在Java编程中,我们通常通过JDBC(Java Database Connectivity)来与Oracle数据库交互,其中游标扮演...

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    Oracle游标使用案例大全

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按行处理数据,逐条读取结果集,而不仅仅是一次性获取所有数据。在Oracle数据库中,游标对于复杂的事务处理、动态SQL以及...

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...

    oracle游标优化

    ### Oracle游标优化 ...通过上述方法,可以在一定程度上优化Oracle游标的性能,从而提高应用程序的整体响应时间和资源利用率。需要注意的是,每种优化策略都应该根据具体的业务需求和技术环境来选择和实施。

    非常详细的Oracle游标整理

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按需逐行处理数据,而不是一次性加载所有结果。这里详细介绍了Oracle中的三种游标类型:隐式游标、显式游标和REF游标。 1....

Global site tag (gtag.js) - Google Analytics