`

oracle 函数返回一个集合

阅读更多

 

     

     create or replace function  text(
startTime   in varchar2,
endTime     in varchar2,
timeType    in number,
spid        in number, 
pagesize    in number,
currentpage in number,
datacount   out number
)
  RETURN  WHITE_LIST_TYPE_ARRAY as
  strsql      varchar2(1000);
  spinfos     WHITE_LIST_TYPE_ARRAY;
  rs          SYS_REFCURSOR;
  id          number;
  sp_name     varchar2(200);
  sp_code     varchar2(200);
  sp_status   number;
  sp_type     number;
  mdn_count   number;
  record      WHITLISTCOUNT;
  pageinfo    WHITE_LIST_TYPE_ARRAY;
  i           number;
  a           number;
  currentsize number;
  pattern     varchar2(20);
  psize       number;
begin
  ---初始化参数
  i         := 1;
  spinfos   := WHITE_LIST_TYPE_ARRAY();
  if timeType = 0 then
    pattern := 'yyyy-mm-dd';
  else
    pattern := 'yyyy_mm';
  end if;
  ------------------------获取数据开始-----------------------------
  -- 或许企业编号、 名称、 id
  strsql := 'select  id, sp_code, sp_name ,sp_type  ,sp_status  from NM_SP_INFO where id != 0  ';

  if spid > 0 then
    strsql := strsql || ' and id ='||spid ;
  end if;
  open rs for strsql;
  loop
    fetch rs
      into id, sp_name, sp_code,sp_type ,sp_status;
    exit when rs%NOTFOUND;
    strsql := 'select count(mdn) from NM_NET_USER_' || id || ' where 1=1 ';
    if startTime is not null then
      strsql := strsql || ' and to_char(modify_time,''' || pattern ||
                ''') >= ''' || startTime || '''';
    end if;
    if startTime is not null then
      strsql := strsql || ' and to_char(modify_time,''' || pattern ||
                ''') <= ''' || endTime || '''';
    end if;
    execute immediate strsql into mdn_count;
    spinfos.extend;
    record := WHITLISTCOUNT(id, sp_name, sp_code,sp_type,sp_status,mdn_count);
    spinfos(i) := record;
    i := i + 1;
  end loop;
  close rs ;
  
    datacount := spinfos.count;
  ---分页开始
  i := i -1;
  if currentpage < 1 then
    return null;
  end if;

  if currentpage < 2 then
    currentsize := 1;
  else
    currentsize := (currentpage - 1) * pagesize;
    currentsize := currentsize + 1;
  end if;
  if i < currentsize then
    return null;
  end if;
  if i = pagesize then
    psize := pagesize;
  else
    if i < currentsize + pagesize then
      psize := MOD(i, pagesize);
          end if;
  end if;

  if psize is null then
    psize := pagesize;
  end if;
   a        := 1;
  i        := 1;
  pageinfo := WHITE_LIST_TYPE_ARRAY();
  pageinfo.extend(psize);
  for i in currentsize..psize + currentsize - 1 LOOP
    pageinfo(a) := spinfos(i);
    a := a + 1;
  end LOOP;

  ---分页结束

   return pageinfo;
end  text;
/

 一个自定义的数组,分别记录了动态表数据,还有一张数据表中的数据 ,添加分页功能, 还有不足之处请大家多多指教

 

0
0
分享到:
评论

相关推荐

    Java调用oracle函数返回oracle类(类似)集合

    2. **创建Oracle函数返回索引表**: 在PL/SQL中,你可以定义一个函数,使其返回上述索引表类型。下面的`funtry_ret_index`函数创建了一个`sqlindext`类型的实例`array`,并填充了一些值,然后将其返回。 ```sql ...

    oracle数据库函数大全集合

    Oracle 数据库函数大全集合是一个非常全面的函数集合,包含了多种常用的函数,以下是对每个函数的详细介绍: 1.ASCII 函数 ASCII 函数返回与指定的字符对应的十进制数。例如,SQL&gt; select ascii('A') A,ascii('a'...

    ORACLE函数大全与整理

    "ORACLE函数大全与整理"这个资源集成了Oracle数据库中常用和不常用的各类函数,为Oracle应用开发者提供了详尽的参考。 一、Oracle函数类型 Oracle函数主要分为以下几类: 1. 数学函数:如ABS()用于返回绝对值,MOD...

    Oracle中实现Split函数功能

    函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,我们可以使用以下 SQL 语句来拆分一个字符串: ``` SELECT * FROM TABLE(f_split...

    oracle函数大全(分类显示).zip_Oracle 函数分类_oracle_oracle函数分类_oracle函数查阅用文档

    这份"oracle函数大全(分类显示).zip"压缩包显然是一份详细的Oracle函数参考手册,对于初学者而言,是一个非常宝贵的资源。下面,我们将深入探讨Oracle函数的分类以及一些重要的函数类型。 1. **数学函数**: 包括...

    ORACLE常用日期函数集合

    ### ORACLE常用日期函数集合详解 #### 一、概述 在Oracle数据库中,日期处理是一项非常重要的功能。本文将详细介绍一些常用的Oracle日期函数及其应用场景,帮助数据库管理员或开发者更好地理解和运用这些函数,以...

    Oracle函数速查手册

    这份"Oracle函数速查手册"旨在为用户提供一个全面、便捷的参考资源,无论是初学者还是经验丰富的开发者,都能从中受益。 Oracle函数分为多种类型,包括数值函数、字符串函数、日期时间函数、转换函数、系统信息函数...

    oracle函数速查手册

    "Oracle函数速查手册"是一份非常实用的参考资料,它涵盖了Oracle数据库中的各种函数,帮助用户快速查找并理解如何使用这些函数。在数据库管理、查询优化以及复杂数据处理时,这些函数起着至关重要的作用。 Oracle...

    ORACLE函数大全 .doc

    ORACLE 函数大全是一个强大的数据库函数集合,提供了多种字符串操作、数字操作、日期操作等功能。本文档将详细介绍 ORACLE 函数大全中的各个函数,包括 ASCII、CHR、CONCAT、INITCAP、INSTR、LENGTH、LOWER、UPPER、...

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

    其中,使用Oracle函数返回游标的方法是一种灵活且高效的解决方案。通过编写一个Oracle函数,可以在函数内部执行复杂的查询逻辑,将查询结果封装在一个游标中,然后在报表解释程序中调用这个函数,动态地处理游标返回...

    oracle函数介绍(6) 著名函数之分析函数.doc

    这两个函数用于返回在DENSE_RANK函数生成的集合中的第一个或最后一个元素。在聚合函数中,它们通常与GROUP BY结合使用;在分析函数中,它们可以对每个分组的排序结果获取第一或最后一个值。 5. FIRST_VALUE (col) ...

    oracle常用函数chm版

    "Oracle常用函数chm版"是一个集合了多种Oracle数据库常用函数的参考资源,主要包含以下几个方面: 1. **数值型函数**:这类函数主要用于处理整数、浮点数等数值类型的数据。例如,`ROUND`函数用于四舍五入,`TRUNC`...

    oracle管道函数用法

    1. **类型兼容性**:确保管道函数返回的类型与定义的集合类型相匹配。 2. **资源消耗**:频繁地使用`PIPEROW`可能会导致较高的系统资源消耗。 3. **调试复杂度**:由于管道函数的特殊性,调试起来可能比普通函数更...

    Oracle常用函数集合

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数是其核心优势之一。以下是对"Oracle常用函数集合"的详细解析: 1. **数值函数**:Oracle提供了多种处理数字的函数,如`ROUND()`用于...

    oracle常用函数和类型

    2. ASCII和CHR:ASCII函数返回字符的ASCII码,而CHR函数根据给定的ASCII码返回对应的字符。 3. INSTR:用于查找字符串中子串的位置,可以指定开始位置和出现次数。 4. INITCAP:将每个单词的首字母转换为大写。 5. ...

    oracle_sql_函数_语法_集合

    6. **子查询**:在主查询中嵌套另一个查询,用于获取满足特定条件的数据。 7. **DML语句**:包括`INSERT`(插入数据)、`UPDATE`(更新数据)和`DELETE`(删除数据)。 8. **DDL语句**:用于创建、修改和删除...

    oracle 函数大全oracle 函数大全

    - `ABS()`:返回一个数的绝对值,例如`ABS(-5)`返回5。 - `MOD()`:返回两个数相除的余数,如`MOD(10, 3)`返回1。 - `ROUND()`:四舍五入到指定的小数位数,`ROUND(3.14159, 2)`将π四舍五入到3.14。 2. **字符...

    Oracle函数及常用sql

    - `MINUS`:返回第一个查询结果中不在第二个查询结果中的行。 6. **游标(CURSOR)**: - 在PL/SQL中处理查询结果,逐行处理数据。 7. **窗口函数(OVER)**: - `RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`:为...

    Oracle函数(chm)

    这些只是Oracle函数的一小部分,Oracle还提供了许多其他高级功能,如窗口函数、分析函数、集合函数等,它们在数据处理和分析中起着至关重要的作用。通过深入学习和熟练运用这些函数,可以极大地提高在Oracle数据库...

Global site tag (gtag.js) - Google Analytics