`

解决postgresql和oracle如何把游标cursor数据存到数组array

阅读更多

 

 

为什么要把游标数据存到数组

如果一个游标频繁调用,那么就会频繁访问数据库,导致效率慢。

如果把调用一次游标后,把数据存到数组,效率会高。

 

postgresql与oracle  转换成array的区别

 

关于postgresql的文章比较难找到,通常都是先找到oracle再猜测postgresql代码怎么写

oracle的实现,可以参考 :

http://kongbei888.blog.163.com/blog/static/243266132010218104021496

http://dolphin-ygj.iteye.com/blog/440204

PG“基本类型”数组变量定义语法:

array_name  integer[];

 
或者

array_name  integer ARRAY[4];

 

当您看完这文章是否猜测,在PG应该如下定义数组才能存放游标的每条记录

array_name  表%rowtype[];
array_name  游标%rowtype[];

 

可是调试后,你会发现以上代码编译都不能通过。。。

再回到PG的文档仔细阅读发现: 
数组类型可以是任何基本类型或用户定义类型。不支持复合类型和域的数组

 


唯一能想到只能是先自定义数据类型了:

 

 

第一步:

 

create type array_type  AS (
  border_type_cd  varchar(20),
  max_value    numeric(9,3),
  min_value    numeric(9,3),
  ref_code    varchar(20)
);

 

 

第二步:定义变量

 

declare 
              ref_datas array_type[]; 

              row_num int;

              cursor_name  cursor is select * from table;

 

 第三步:循环游标数据cursor_name,放到数组ref_datas

 

row_num=0;

for rd in cursor_name loop

	--raise notice '%',row_num;
	ref_datas[row_num]=row(rd.border_type_cd, rd.max_value, rd.min_value, rd.ref_code);
	row_num=row_num+1;
end loop;

 

 第四步:从数组里拿数据

for i in 0..array_length(ref_datas,1)-1 loop
	raise notice 'border_type_cd(%)---------max_value(%)----------min_value(%)-------',
	ref_datas[i].border_type_cd,
	ref_datas[i].max_value,
	ref_datas[i].min_value;

end loop;

 

如有不明,请回帖或qq(625514418)联系本人

0
1
分享到:
评论

相关推荐

    postgresql 兼容 oracle 函数

    在进行Oracle到PostgreSQL的数据迁移时,了解并使用orafce这样的工具可以显著降低迁移难度,提高代码可重用性,同时也能减少因语法差异导致的错误。然而,全面的兼容性不仅限于函数层面,还需要考虑SQL语法、存储...

    Postgresql连接oracle驱动并实现读写

    通过以上步骤,我们可以在CentOS 6.2环境下成功地使用PostgreSQL 9.5.6连接到Oracle 11.2客户端,并实现了数据的读写操作。这种方式极大地扩展了PostgreSQL的功能,并提供了与Oracle数据库交互的能力,对于需要跨...

    MySQL、PostgreSQL、Oracle比较及数据库基础知识

    MySQL、PostgreSQL、Oracle比较; 数据库基础知识.ppt

    PostgreSQL & Oracle-备份恢复技术大比拼

    这些工具有着不同的数据/元数据移动引擎,支持并行操作和异构数据迁移,允许从多种数据源导入数据到Oracle数据库。 SQL*Loader是Oracle提供的一个批量数据加载工具,它可以处理大量的数据加载需求,并支持多种控制...

    PostgreSQL和Oracle区别

    标题和描述中提到的知识点是关于PostgreSQL和Oracle在特定功能和语法上的区别,下面将对这些关键点进行深入解析: ### 1. 增加约束的方式 **Oracle**和**PostgreSQL**在添加主键约束时的语法有所不同: - **Oracle...

    postgresql和oracle创建空间索引

    标题中的“postgresql和oracle创建空间索引”涉及的是在两种主流的关系型数据库管理系统(RDBMS)中,如何为地理空间数据创建索引的技术。在处理包含地理信息的数据时,如地图坐标、地理位置等,空间索引能显著提高...

    支持多种数据源的nacos-1.4.2,包括mysql/postgresql/oracle/derby

    支持多种数据源的nacos,包括mysql/postgresql/oracle/derby 版本号为1.4.2 对应的各个组件版本 springcloud version: 2020.0.1 springboot version: 2.4.2 springcloudalibaba version: 2021.1 需根据自身情况修改...

    Oracle至PostgreSQL数据库迁移方案.pptx

    它连接Oracle数据库,自动扫描并提取其结构或数据,然后生成可以加载到PostgreSQL数据库中的SQL脚本。 二、Ora2PG功能 Ora2PG可以支持大多数SQL的转换,但某些情况下仍需要人工校正语法,使其兼容PostgreSQL。其...

    JDBC.rar_jdbc PostgreSQL_oracle_postgresql

    标题中的“JDBC.rar_jdbc PostgreSQL_oracle_postgresql”表明这个压缩包文件包含了关于Java数据库连接(JDBC)以及PostgreSQL、Oracle和SQL Server 2000这三种数据库的相关内容。描述中提到,这份资料将详细介绍...

    PostgreSQL與Oracle跟SQL92 Standard的差異

    - **ISO SQL92 Standard**、**PostgreSQL**与**Oracle**:三者均支持`timestamp`类型,用于存储时间戳数据,但PostgreSQL和Oracle的`timestamp`类型具有固定的字节数量,而ISO SQL92标准中的`timestamp`类型大小则...

    oracle移植到postgreSQL

    ora2pg是移植过程的核心,它提供了自动化脚本和报告,帮助简化从Oracle到PostgreSQL的数据迁移。以下是ora2pg的一些主要特性: 1. **数据和架构迁移**:ora2pg能够扫描Oracle数据库,生成包含表结构、索引、触发器...

    PostgreSQL的数组

    PostgreSQL作为一款强大的开源关系型数据库管理系统,提供了丰富多样的内置数据类型,其中数组类型是非常实用且功能强大的一种数据类型。数组类型允许用户在一个字段内存储多个值,这不仅极大地简化了数据库设计,还...

    pg-array:将数组和分隔字符串转换为 PostgreSQL 数组表示

    将数组和分隔字符串转换为 PostgreSQL 数组表示。 $ npm install pg-array 例子 从逗号分隔的字符串 var pgarray = require('pg-array'); pgarray('node, ruby, rust'); //=> '{node,ruby,rust}' 来自任意分隔的...

    PostgreSQL PG&Oracle-备份技术完美攻略

    PostgreSQL 和 Oracle 是两个最流行的关系数据库管理系统,它们都提供了强大的备份和恢复机制,以确保数据的安全和可靠性。在本篇文章中,我们将详细介绍 PostgreSQL 和 Oracle 的备份技术,包括逻辑备份、物理备份...

    oracle迁移到PostgreSQL社区代码

    Oracle到PostgreSQL迁移是一项复杂而重要的任务,涉及到数据库架构、数据类型映射、SQL语法转换、存储过程和触发器的重写等多个方面。在本文中,我们将深入探讨这个主题,特别是针对“oracle_fdw-master”这个压缩包...

    PostgreSQL MySQL Oracle数据库设计优化完美攻略

    无论我们选择哪种数据库系统——PostgreSQL、MySQL还是Oracle,设计阶段的优化措施都将对系统的性能和可靠性产生深远的影响。本文将深入探讨在数据库设计阶段,如何通过合理策略来优化性能,以确保设计出的数据库既...

    SqlServer ,postgresql-8.3-603, mysql,oracle以及将数据导入到excel 的相关jar包

    本文将详细介绍如何使用SQL Server、PostgreSQL 8.3-603、MySQL、Oracle这四种主流的关系型数据库管理系统(RDBMS)进行数据操作,并探讨如何将这些数据库中的数据导入Excel进行分析和处理。涉及到的关键点包括...

    postgresql+postgis安装和空间数据的导入

    在本文中,我们将介绍如何安装PostgreSQL和PostGIS,并将空间数据导入到PostGIS数据库中。 一、PostgreSQL的安装 PostgreSQL的安装非常简单,用户可以根据自己的操作系统选择合适的安装包。对于Windows用户,可以...

    postgresql_cursor:ActiveRecord PostgreSQL适配器扩展,用于使用游标返回较大的结果集

    使用游标PostgreSQLCursor的开发是为了利用PostgreSQL游标。 游标允许程序声明游标以运行给定的查询,以将行的“块”返回给应用程序,同时保留完整结果集在数据库中的位置。 这克服了使用find_each和find_in_batches...

    导入TXT到ARRAY源代码

    本文将详细介绍如何将TXT文件中的数据导入到ARRAY(数组)中,并进一步探讨如何将这些数据导入到各种数据库。我们将主要围绕“TXT”、“数据库”和“ARRAY”这三个标签展开讨论。 首先,TXT文件是一种纯文本格式,...

Global site tag (gtag.js) - Google Analytics