`
DataBird
  • 浏览: 72266 次
  • 性别: Icon_minigender_1
  • 来自: 湖南长沙
社区版块
存档分类
最新评论

oracle 存储过程调用 返回游标结果集

阅读更多
DECLARE
  V_BEGIN DATE := TO_DATE('2010-12-26 00:00', 'YYYY-MM-DD HH24:MI');
  V_END   DATE := TO_DATE('2011-01-06 23:00', 'YYYY-MM-DD HH24:MI');
BEGIN
  WHILE V_BEGIN <= V_END LOOP
    P_GKPIBSC_MOT(TO_CHAR(V_BEGIN, 'YYYY-MM-DD HH24:MI'));
    V_BEGIN := V_BEGIN + 1 / 24;
  END LOOP;
END;
/


CREATE OR REPLACE PROCEDURE P_TOPN_CI(V_DATE   IN VARCHAR2,
                                      V_TYPE   IN INT,
                                      V_RESULT OUT SYS_REFCURSOR) AS
BEGIN
  IF V_TYPE = 1 THEN
 
    EXECUTE IMMEDIATE 'TRUNCATE TABLE TOPN_CI_BLOCK1';
    INSERT INTO TOPN_CI_BLOCK1
      SELECT 0, --时段数量
             '#N/A', --BTSNAME
             BSC,
             BTS,
             LAC,
             CI,
             SUM(TRAFFIC_TCH) / NULLIF(SUM(AV_TCH), 0) TCH每线,
             AVG(TRAFFIC_TCH) TCH话务量,
             AVG(TRAFFIC_TCHH) TCH半速率话务量,
             AVG(AV_TCH) TCH信道,
             SUM(BLOCK_TCH) / NULLIF(SUM(REQ_TCH), 0) * 100 TCH拥塞率,
             AVG(BAR_MIN) 流控,
             SUM(BLOCK_SD) / NULLIF(SUM(REQ_SD), 0) * 100 SD拥塞率,
             AVG(BUSY_SD_MAX) SD最大使用数,
             AVG(AV_SD) SD信道,
             SUM(TRAFFIC_SD) / NULLIF(SUM(AV_SD), 0) SD每线,
             AVG(SMS_SD) 短信,
             SUM(PCH_DISCARD) / NULLIF(SUM(PCH_REQ), 0) * 100 PCH拥塞率,
             SUM(IA_DISCARD) / NULLIF(SUM(IA_REQ), 0) * 100 AGCH拥塞率,
             AVG(BUSY_TCH_MAX) TCH最大使用数,
             AVG(UL_BUSY_PD_MAX) ULPD最大使用数,
             AVG(DL_BUSY_PD_MAX) DLPD最大使用数
        FROM G_KPI_CI
       WHERE (LAC, CI, RECTIME) IN
             (SELECT LAC, CI, RECTIME
                FROM TOPN_CI
               WHERE TOPN_TYPE = 1
                 AND RECDATE = TO_DATE(V_DATE, 'YYYY-MM-DD'))
       GROUP BY BSC, BTS, LAC, CI;
 
    UPDATE TOPN_CI_BLOCK1 X
       SET 时段数量 =
           (SELECT BLOCK_HOURS
              FROM (SELECT LAC, CI, COUNT(1) BLOCK_HOURS
                      FROM TOPN_CI
                     WHERE TOPN_TYPE = 1
                       AND RECDATE = TO_DATE(V_DATE, 'YYYY-MM-DD')
                     GROUP BY LAC, CI)
             WHERE X.LAC = LAC
               AND X.CI = CI);
    COMMIT;
    UPDATE TOPN_CI_BLOCK1 X
       SET BTSNAME =
           (SELECT BTSNAME
              FROM WY_NE
             WHERE X.LAC = LAC
               AND X.CI = CI);
    COMMIT;
 
    OPEN V_RESULT FOR
      SELECT *
        FROM TOPN_CI_BLOCK1
       ORDER BY 时段数量 * (TCH拥塞率 + 流控 + SD拥塞率) DESC;

 
  END IF;

  IF V_TYPE = 2 THEN
 
    。。。
 
    OPEN V_RESULT FOR
      SELECT *
        FROM TOPN_CI_SETUP1
       ORDER BY 时段数量 * (1 - 呼叫建立成功率) * (1 - 呼叫建立成功率) * 呼建请求次数 DESC;
 
  END IF;
END;
分享到:
评论

相关推荐

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

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

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

    oracle的存储过程如何返回结果集

    ### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...

    Oracle存储过程返回结果集

    本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...

    java调用oracle存储过程(游标)相关

    以下是调用包含游标返回的Oracle存储过程的基本步骤: 1. **连接数据库**: 使用`DriverManager.getConnection()`方法建立与Oracle数据库的连接,确保已将Oracle JDBC驱动添加到项目的类路径中。 2. **创建...

    Oracle存储过程out游标

    Oracle存储过程中的“Out”游标是数据库编程中一种常用的技术,主要用于在PL/SQL块中返回结果集到调用者。在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle...

    利用游标返回结果集的的例子(Oracle 存储过程).doc

    4. 使用Java的JDBC API调用这些存储过程,处理返回的游标结果。 这种技术在需要在应用程序中分批处理大量数据或者需要动态构建查询结果时非常有用。通过游标,我们可以灵活地控制对数据库的访问,同时避免一次性...

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...

    JAVA调用ORACLE存储过程游标使用

    Oracle存储过程可以封装复杂的业务逻辑,而游标则用于在结果集上进行迭代,特别是当结果集太大,不适合一次性加载到内存时。下面将详细介绍如何在Java中实现这一功能。 首先,确保你已经在Oracle数据库中创建了包含...

    Oracle存储过程实例使用显示游标

    在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...

    oracle 在一个存储过程中调用另一个返回游标的存储过程

    总结一下,在Oracle中,调用返回游标的存储过程时,关键在于确保调用端声明的游标变量类型与被调用存储过程返回的游标结构相匹配。这可以通过使用`%ROWTYPE`特性来实现,它可以自动创建与表或视图列结构对应的记录...

    Java获取Oracle存储过程返回的Cursor

    在Java编程中,有时我们需要调用Oracle数据库的存储过程,特别是当存储过程返回一个游标(Cursor)时,这种情况在处理大量数据或者分页查询时很常见。游标允许我们逐行处理结果集,而无需一次性加载所有数据,这对于...

    oracle10g 函数返回游标类型

    当函数返回一个游标时,调用者可以使用循环或其他迭代结构来访问所有返回的记录,而不仅仅是单个结果。 ### 描述:“根据所示代码 可以实现返回记录集类型的函数” 描述部分简要解释了示例代码的功能,即创建一个...

    ibatis调存储过程返回游标

    当存储过程返回游标时,iBatis允许我们通过`resultMap`来映射结果集,例如: ```xml ``` 这个`resultMap`用于将查询结果映射到Java对象上,其中每个`result`元素对应结果集中的一列。 对于返回游标的...

    Oracle 存储过程JAVA调用存储过程 游标使用

    通过阅读和分析这些文件,你可以深入理解如何在Java应用程序中调用Oracle存储过程,并且有效地利用游标处理数据。这个过程涉及到数据库设计、SQL编写、PL/SQL编程以及Java JDBC技术,是数据库开发中的核心技能之一。

    oracle存储过程游标

    ### Oracle 存储过程与游标使用...通过以上分析,我们可以看到Oracle存储过程与游标的应用十分广泛,不仅能够提升开发效率,还能增强系统的稳定性和安全性。熟练掌握这些技术对于数据库管理员和开发人员来说至关重要。

    C#调用带游标的oralce存储过程

    本示例主要讲解如何在C# Winform应用中调用带游标的Oracle存储过程,以及处理返回的输出参数。 首先,确保你的开发环境已经安装了Oracle的数据提供程序,如ODP.NET。这将允许C#与Oracle数据库进行交互。在NuGet包...

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    3. Java调用Oracle存储过程处理输出游标: 存储过程是预编译的SQL语句集合,可以在数据库服务器端执行。在Java中,可以使用`CallableStatement`来调用存储过程,特别是处理返回输出游标的存储过程。游标允许我们...

Global site tag (gtag.js) - Google Analytics