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;
/
一个自定义的数组,分别记录了动态表数据,还有一张数据表中的数据 ,添加分页功能, 还有不足之处请大家多多指教
相关推荐
2. **创建Oracle函数返回索引表**: 在PL/SQL中,你可以定义一个函数,使其返回上述索引表类型。下面的`funtry_ret_index`函数创建了一个`sqlindext`类型的实例`array`,并填充了一些值,然后将其返回。 ```sql ...
Oracle 数据库函数大全集合是一个非常全面的函数集合,包含了多种常用的函数,以下是对每个函数的详细介绍: 1.ASCII 函数 ASCII 函数返回与指定的字符对应的十进制数。例如,SQL> select ascii('A') A,ascii('a'...
"ORACLE函数大全与整理"这个资源集成了Oracle数据库中常用和不常用的各类函数,为Oracle应用开发者提供了详尽的参考。 一、Oracle函数类型 Oracle函数主要分为以下几类: 1. 数学函数:如ABS()用于返回绝对值,MOD...
这份"oracle函数大全(分类显示).zip"压缩包显然是一份详细的Oracle函数参考手册,对于初学者而言,是一个非常宝贵的资源。下面,我们将深入探讨Oracle函数的分类以及一些重要的函数类型。 1. **数学函数**: 包括...
函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,我们可以使用以下 SQL 语句来拆分一个字符串: ``` SELECT * FROM TABLE(f_split...
### ORACLE常用日期函数集合详解 #### 一、概述 在Oracle数据库中,日期处理是一项非常重要的功能。本文将详细介绍一些常用的Oracle日期函数及其应用场景,帮助数据库管理员或开发者更好地理解和运用这些函数,以...
这份"Oracle函数速查手册"旨在为用户提供一个全面、便捷的参考资源,无论是初学者还是经验丰富的开发者,都能从中受益。 Oracle函数分为多种类型,包括数值函数、字符串函数、日期时间函数、转换函数、系统信息函数...
"Oracle函数速查手册"是一份非常实用的参考资料,它涵盖了Oracle数据库中的各种函数,帮助用户快速查找并理解如何使用这些函数。在数据库管理、查询优化以及复杂数据处理时,这些函数起着至关重要的作用。 Oracle...
ORACLE 函数大全是一个强大的数据库函数集合,提供了多种字符串操作、数字操作、日期操作等功能。本文档将详细介绍 ORACLE 函数大全中的各个函数,包括 ASCII、CHR、CONCAT、INITCAP、INSTR、LENGTH、LOWER、UPPER、...
其中,使用Oracle函数返回游标的方法是一种灵活且高效的解决方案。通过编写一个Oracle函数,可以在函数内部执行复杂的查询逻辑,将查询结果封装在一个游标中,然后在报表解释程序中调用这个函数,动态地处理游标返回...
这两个函数用于返回在DENSE_RANK函数生成的集合中的第一个或最后一个元素。在聚合函数中,它们通常与GROUP BY结合使用;在分析函数中,它们可以对每个分组的排序结果获取第一或最后一个值。 5. FIRST_VALUE (col) ...
"Oracle常用函数chm版"是一个集合了多种Oracle数据库常用函数的参考资源,主要包含以下几个方面: 1. **数值型函数**:这类函数主要用于处理整数、浮点数等数值类型的数据。例如,`ROUND`函数用于四舍五入,`TRUNC`...
1. **类型兼容性**:确保管道函数返回的类型与定义的集合类型相匹配。 2. **资源消耗**:频繁地使用`PIPEROW`可能会导致较高的系统资源消耗。 3. **调试复杂度**:由于管道函数的特殊性,调试起来可能比普通函数更...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数是其核心优势之一。以下是对"Oracle常用函数集合"的详细解析: 1. **数值函数**:Oracle提供了多种处理数字的函数,如`ROUND()`用于...
2. ASCII和CHR:ASCII函数返回字符的ASCII码,而CHR函数根据给定的ASCII码返回对应的字符。 3. INSTR:用于查找字符串中子串的位置,可以指定开始位置和出现次数。 4. INITCAP:将每个单词的首字母转换为大写。 5. ...
6. **子查询**:在主查询中嵌套另一个查询,用于获取满足特定条件的数据。 7. **DML语句**:包括`INSERT`(插入数据)、`UPDATE`(更新数据)和`DELETE`(删除数据)。 8. **DDL语句**:用于创建、修改和删除...
- `ABS()`:返回一个数的绝对值,例如`ABS(-5)`返回5。 - `MOD()`:返回两个数相除的余数,如`MOD(10, 3)`返回1。 - `ROUND()`:四舍五入到指定的小数位数,`ROUND(3.14159, 2)`将π四舍五入到3.14。 2. **字符...
- `MINUS`:返回第一个查询结果中不在第二个查询结果中的行。 6. **游标(CURSOR)**: - 在PL/SQL中处理查询结果,逐行处理数据。 7. **窗口函数(OVER)**: - `RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`:为...
这些只是Oracle函数的一小部分,Oracle还提供了许多其他高级功能,如窗口函数、分析函数、集合函数等,它们在数据处理和分析中起着至关重要的作用。通过深入学习和熟练运用这些函数,可以极大地提高在Oracle数据库...