我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【原创】Oracle实现PGSQL的generate_series

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【原创】Oracle实现PGSQL的generate_series

PostgreSQL 有生成序列的函数,可以方便的进行造数据。这里我用ORACLE实现了PGSQL的generate_series函数功能。

POSTGRESQL.

t_girl=# select * from generate_series(1,10);
 generate_series
-----------------
               1
               2
               3
               4
               5
               6
               7
               8
               9
              10
(10 行记录)
时间:1.290 ms
t_girl=# select * from generate_series(1,10,2);
 generate_series
-----------------
               1
               3
               5
               7
               9
(5 行记录)
时间:0.431 ms
t_girl=# select * from generate_series(1,10,3);
 generate_series
-----------------
               1
               4
               7
              10
(4 行记录)
时间:0.879 ms
t_girl=# select * from generate_series(2,10,3);
 generate_series
-----------------
               2
               5
               8
(3 行记录)
时间:0.867 ms
t_girl=# select count(*) from generate_series(1,1000);
 count
-------
  1000
(1 行记录)
时间:1.142 ms
t_girl=# select to_char(now() - '1 day'::interval * n,'YYYY-MM-DD') as result from generate_series(1,10)  g(n);
   result
------------
 2015-12-08
 2015-12-07
 2015-12-06
 2015-12-05
 2015-12-04
 2015-12-03
 2015-12-02
 2015-12-01
 2015-11-30
 2015-11-29
(10 行记录)
时间:17.284 ms


ORACLE:

12:10:34 SQL> select * from table(ytt_generate_series(1,10));
COLUMN_VALUE                                                                    
------------                                                                    
           1                                                                    
           2                                                                    
           3                                                                    
           4                                                                    
           5                                                                    
           6                                                                    
           7                                                                    
           8                                                                    
           9                                                                    
          10                                                                    
已选择 10 行。
已用时间:  00: 00: 00.02
12:10:36 SQL> select * from table(ytt_generate_series(1,10,2));
COLUMN_VALUE                                                                    
------------                                                                    
           1                                                                    
           3                                                                    
           5                                                                    
           7                                                                    
           9                                                                    
已用时间:  00: 00: 00.00
12:10:54 SQL> select * from table(ytt_generate_series(1,10,3));
COLUMN_VALUE                                                                    
------------                                                                    
           1                                                                    
           4                                                                    
           7                                                                    
          10                                                                    
已用时间:  00: 00: 00.00
12:10:56 SQL> select * from table(ytt_generate_series(2,10,3));
COLUMN_VALUE                                                                    
------------                                                                    
           2                                                                    
           5                                                                    
           8                                                                    
已用时间:  00: 00: 00.02
12:11:04 SQL> select count(*) from table(ytt_generate_series(1,1000));
  COUNT(*)                                                                      
----------                                                                      
      1000                                                                      
已用时间:  00: 00: 00.13
13:32:13 SQL> select to_char(sysdate - n,'YYYY-MM-DD') from table(ytt_generate_series(1,10));
TO_CHAR(SY
----------
2015-12-08
2015-12-07
2015-12-06
2015-12-05
2015-12-04
2015-12-03
2015-12-02
2015-12-01
2015-11-30
2015-11-29
已选择 10 行。
已用时间:  00: 00: 00.01



附上代码:

-- Declare result set.
create or replace type ytt_num is object
( n number);
/
create or replace type numbers_table is table of ytt_num;
/
-- Function body.
-- Created by ytt.
-- 2015/12/9
create or replace function ytt_generate_series
(
f_start_num number := 1, -- Start number.
f_end_num number,  -- Finish number.
f_step_num number := 1 -- Step.
)
return numbers_table pipelined
is 
  list numbers_table := numbers_table();
  i number := 0;
  j number := 1;
begin
  i := f_start_num;
  j := 1;
  -- Increase nested table's size.
  list.extend(f_end_num);
  -- Loop begin.
  while i <= f_end_num loop
  -- Initlization.
    list(j) := ytt_num(null);
    list(j).n := i;
    pipe row(list(j));
    i := i + f_step_num;
    j := j + 1;
  end loop;
  return;
end;
/


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【原创】Oracle实现PGSQL的generate_series

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

golang与pgsql交互的实现

本文主要介绍了golang与pgsql交互的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-19

vue.js父子组件传参的原理与实现方法 原创

这篇文章主要介绍了vue.js父子组件传参的原理与实现方法,结合实例形式分析了vue.js父子组件传参的基本原理、实现方法与相关操作注意事项,需要的朋友可以参考下
2023-05-17

vue.js模版插值的原理与实现方法简析 原创

这篇文章主要介绍了vue.js模版插值的原理与实现方法,结合实例形式简单分析了vue.js模板插值的基本功能、原理、实现方法与注意事项,需要的朋友可以参考下
2023-05-17

oracle索引创建的原则是什么

创建索引的原则是根据查询的频率、数据的选择性和查询性能来决定。以下是创建索引的一些原则:频繁使用的查询应该创建索引:如果某个查询经常被执行,那么为该查询的列创建索引可以提高查询性能。数据的选择性高的列应该创建索引:选择性是指列中不同值的数量
oracle索引创建的原则是什么
2024-04-09

Python怎么实现短视频伪原创

这篇“Python怎么实现短视频伪原创”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么实现短视频伪原创”文章吧
2023-06-29

Html5中基于canvas实现原创俄罗斯方块的示例

这篇文章将为大家详细讲解有关Html5中基于canvas实现原创俄罗斯方块的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一次写俄罗斯方块的时候已经是1年多前了,也是我刚刚学js不久。为了加强对js
2023-06-09

oracle创建表空间自动扩展怎么实现

要实现Oracle数据库表空间的自动扩展,可以通过以下步骤来实现:创建一个包含自动扩展属性的表空间:在创建表空间时,使用关键字“AUTOEXTEND”并指定“ON”来启用自动扩展。示例如下:CREATE TABLESPACE example
oracle创建表空间自动扩展怎么实现
2024-04-09

pycharm怎么实现创建表格_pycharm实现创建表格的方法

首先打开pycharm工具。再点击file,创建python项目。导入python的docx库。接着创建document对象。再创建table表格。最后用text向表格输入数据。以上就是pycharm怎么实现创建表格_pycharm实现创
pycharm怎么实现创建表格_pycharm实现创建表格的方法
2024-05-10

基于Python实现原创程序猿乘风破浪小游戏

最近学习了一丁点Pygame技能,感觉有点上头,一波操作创作“程序猿乘风破浪”游戏一款,文中的示例代码讲解详细,希望大家能够喜欢
2023-02-15

JSON Web Tokens的实现原理

前言 最近在做一个Python项目的改造,将python项目重构为Java项目,过程中遇到了这个知识点,觉得这个蛮实用的,所以下班后回来趁热打铁写下这篇总结,希望后面的人能够有所借鉴,少走弯路。 一、优势简介 JSON Web Tokens
2022-06-04

Python 探针的实现原理

探针的实现主要涉及以下几个知识点: sys.meta_path sitecustomize.py sys.meta_path sys.meta_path 这个简单的来说就是可以实现 import hook 的功能, 当执行 import 相
2022-06-04

HashMap的底层实现原理

这篇文章主要介绍“HashMap的底层实现原理”,在日常操作中,相信很多人在HashMap的底层实现原理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HashMap的底层实现原理”的疑惑有所帮助!接下来,请跟
2023-06-04

编程热搜

目录