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

oracle 存储过程返回结果集

阅读更多

今天 做项目要一数据统计,写一存储过程。因为绑定变量,让我头头疼半天。现在终于解决,写出来以为后记!

表结构:

  create table "CXUSER"."FSM_E_PRESS_SUBS"(
        "ID" VARCHAR2(36) not null,
       "E_PRESS_ID" VARCHAR2(36),
       "MEMBERID" VARCHAR2(36),
       "SUBS_TIME" DATE,
       "TAG" VARCHAR2(1) default '0',
       "CANCEL_TIME" DATE,
        constraint "PK_FSM_E_PRESS_SUBS" primary key ("ID")
    );

 

--创建包,声明
  CREATE OR REPLACE PACKAGE pkg_test
        AS
         TYPE myrctype IS REF CURSOR;
            PROCEDURE  pkg_pro(p_id in varchar2,p_id1 in varchar2,p_rc OUT myrctype);
           END pkg_test;

------创建包体

 CREATE OR REPLACE  package  body pkg_test AS
         PROCEDURE pkg_pro(p_id in varchar2,p_id1 in varchar2, p_rc OUT myrctype)
         IS
             SQLSTR VARCHAR2(30000);
          
       BEGIN
  
         SQLSTR :='SELECT m.orderCount ,
                          m.e_press_id,m.years as orderyear,
                          n.cancelCount ,
                          n.years as cancelyears
               FROM
               (
                   select count(*) as orderCount,
                          t.e_press_id ,
                          to_char(t.subs_time,''yyyy-mm'') as years
                   from fsm_e_press_subs t
                   where     t.tag  = 0


                        and t.e_press_id = :w_id

            //and t.e_press_id =p_id 错误的

          group by t.e_press_id, to_char(t.subs_time,''yyyy-mm'')) m

           LEFT JOIN
                (
          select count(*) as cancelCount,
                        t.e_press_id ,
                        to_char(t.subs_time,''yyyy-mm'') as years
                 from fsm_e_press_subs t
           where   t.tag  = 1
                   and t.e_press_id = :w_id1

              //and t.e_press_id=p_id;错误的
                  group by t.e_press_id, to_char(t.subs_time,''yyyy-mm'')) n
           ON  m.e_press_id = n.e_press_id and m.years = n.years';
          OPEN p_rc FOR SQLSTR using p_id,p_id1;

     // open p_rc for SQLSTR using p_id;  错误的
       END pkg_pro;
   END pkg_test;

 

----测试
declare
s1 varchar2(30);
s2 varchar2(30);
s3 varchar2(30);
s4 varchar2(30);
s5 varchar2(30);
cc pkg_test.myrctype ;
begin
 pkg_test.pkg_pro('0000027c','0000027c',cc);
 LOOP
 FETCH cc INTO  s1,s2,s3,s4,s5;
 EXIT WHEN cc%NOTFOUND;
  DBMS_OUTPUT.PUT_LINE(' status   '||s1);
 END LOOP;
 end;

--------首先在语句体内绑定变量与存储过程传入的参数个数要匹配,语句体内的

绑定变量不能重名。而且输入的参数个数与USING后的参数要相同。


分享到:
评论

相关推荐

    Oracle存储过程返回结果集

    该文档详细讲解Oracle在存储过程中如何利用Out参数返回一个结果集。示例简单易懂。

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

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

    ORACLE 存储过程返回结果集,拼接为字符串输出为clob

    大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).doc

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).doc

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

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

    成绩分段oracle存储过程返回结果集

    oracle存储过程中,实现成绩分段显示人数,produce中带三个传入参数:起始分数(例如0),总分(例如100),分数间隔(例如10)。一个返回参数为游标,用来返回结果集。

    C#中调用oracle存储过程返回数据集

    在C#中调用Oracle存储过程来返回数据集是一个常见的任务,这涉及到ADO.NET库的使用,特别是OracleClient组件。Oracle存储过程是数据库中的预编译SQL代码块,可以接收输入参数,执行复杂的业务逻辑,并返回结果。在C#...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    Oracle 存储过程返回结果集.doc

    在Oracle中,可以通过OUT参数来让存储过程返回一个结果集。这里使用了REF CURSOR类型,它是一个指向结果集的指针。REF CURSOR类型的声明通常放在包规范(PACKAGE SPECIFICATION)中,然后在包主体(PACKAGE BODY)中...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).pdf

    如果存储过程返回一个结果集,例如我们需要查询某个ID对应的数据,可以创建一个返回结果集的存储过程。在Java中处理这种存储过程的步骤类似,但需要额外处理返回的结果集: 1. 调用存储过程:`cs.execute();` 2. ...

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

    - `ResultSet`对象`rs`可以像处理普通的SQL查询结果一样进行遍历,读取存储过程返回的数据。 注意,处理返回的Cursor时,必须确保存储过程已经正确地打开并返回了游标,否则在Java端无法正常获取数据。此外,为了...

    Spring jdbcTemplate调用Oracle存储过程返回List集合

    Spring jdbcTemplate 调用 Oracle 存储过程返回 List 集合 Spring jdbcTemplate 是一个强大的 JDBC 模板,提供了简洁的方式来访问数据库。在此文档中,我们将介绍如何使用 Spring jdbcTemplate 调用 Oracle 存储...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).docx

    本篇将详细介绍如何使用CallableStatement调用Oracle存储过程,并处理返回的结果集(ResultSet)。 一、无返回值的存储过程 在Oracle中,一个无返回值的存储过程可能只执行某些操作,例如插入数据。以下是一个简单...

    Delphi中调用oracle的存储过程返回数据集

    Delphi 中调用 Oracle 的存储过程返回数据集是指在 Delphi 应用程序中调用 Oracle 数据库中的存储过程,并将存储过程的返回结果集显示在 Delphi 应用程序中。这种方式可以将 Oracle 数据库中的数据实时同步到 Delphi...

    使用OLE-DB和ADO调用返回记录集的Oracle存储过程.docx

    "使用OLE-DB和ADO调用返回记录集的Oracle存储过程" 摘要:本文介绍了如何使用OLE DB和ADO调用返回记录集的Oracle存储过程。OLE DB是一个开放规范,提供了对不同类型数据的访问和操纵标准。ADO是OLE DB的消费者,...

    oracle存储过程返回游标数据集

    存储过程中通过返回数据集,通过游标方式实现,以及在java中如何接收的整个过程

    Oracle 返回多个结果集

    在Oracle数据库中,返回多个结果集是一个常见的需求,特别是在处理复杂的查询或存储过程时。一个结果集通常对应于SQL查询的执行结果,但有时我们可能需要在一个操作中获取并处理多个独立的结果集。这就涉及到了...

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

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

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

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

    本篇文章将详细介绍如何在Java中通过ODBC6驱动获取Oracle存储过程返回的Cursor。 首先,我们需要创建一个Oracle存储过程,该过程定义了一个名为CURSOR_RESULT的REF CURSOR类型。在提供的示例中,我们有一个名为TEST...

Global site tag (gtag.js) - Google Analytics