PostgreSQL 17新特性:PL/pgSQL支持数组%TYPE以及%ROWTYPE

这篇具有很好参考价值的文章主要介绍了PostgreSQL 17新特性:PL/pgSQL支持数组%TYPE以及%ROWTYPE。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

正在开发中的 PostgreSQL 17 即将增加一个新功能:PL/pgSQL 支持定义伪类型 %TYPE以及%ROWTYPE 数组。

当我们使用 PL/pgSQL 编写存储过程或者函数时,可以定义不同类型的变量。例如:

user_id integer;
quantity numeric(5);
url varchar;
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;

在此基础上,我们可以通过 %TYPE 以及 %ROWTYPE 定义伪类型,例如:

user_id users.user_id%TYPE;
user_row users%ROWTYPE;

变量 user_id 的类型基于字段 users.user_id 的类型,user_row 的类型基于表 users 的行类型。这种伪类型的好处是表的字段类型发生变化时,代码不需要改动。

PostgreSQL 17 开始,我们可以定义这种伪类型的数组变量,例如:

DO $$
DECLARE
    v_all_db_names pg_database.datname%TYPE[];
    v_all_dbs pg_database%ROWTYPE[];
BEGIN
    SELECT array_agg(datname) INTO v_all_db_names FROM pg_database;
    SELECT array_agg(d) INTO v_all_dbs FROM pg_database d;
    raise notice 'All db names = %', v_all_db_names;
    raise notice 'All dbs = %', v_all_dbs;
END;
$$;

NOTICE:  ALL db names = {postgres,template1,template0,pgdba,depesz}
NOTICE:  ALL dbs = {"(5,postgres,10,6,c,f,t,f,-1,728,1,1663,en_US.UTF-8,en_US.UTF-8,,,2.37,)","(1,template1,10,6,c,t,t,f,-1,728,1,1663,en_US.UTF-8,en_US.UTF-8,,,2.37,\"{=c/pgdba,pgdba=CTc/pgdba}\")","(4,template0,10,6,c,t,f,f,-1,728,1,1663,en_US.UTF-8,en_US.UTF-8,,,,\"{=c/pgdba,pgdba=CTc/pgdba}\")","(16462,pgdba,10,6,c,f,t,f,-1,728,1,1663,en_US.UTF-8,en_US.UTF-8,,,2.37,)","(16473,testdb,16384,6,c,f,t,f,-1,728,1,1663,en_US.UTF-8,en_US.UTF-8,,,2.37,)"}
DO

其中,v_all_db_names 变量是一个字符串数组,元素的类型锚定了 pg_database.datname 的类型。v_all_dbs 是一个行数组,元素的类型锚定了 pg_database%ROWTYPE 行类型。文章来源地址https://www.toymoban.com/news/detail-822212.html

到了这里,关于PostgreSQL 17新特性:PL/pgSQL支持数组%TYPE以及%ROWTYPE的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 整理spring-web里支持的文件以及对应的Content-Type

    最近在弄文件上传、下载、在线预览时经常需要设置请求标头或者响应标头的Content-Type 属性。所以研究了一下spring支持哪些Content-Type,通过研究MediaTypeFactory.getMediaType的源码,可以得知spring是将支持的Content-Type 维护在/org/springframework/http/mime.types文件中。 通过上面查找文件的

    2024年02月09日
    浏览(40)
  • 【PostgreSQL】系列之 一 CentOS 7安装PGSQL15版本(一)

    目录 一、何为PostgreSQL? 二、PostgreSQL安装 2.1安装依赖 2.2 执行安装 2.3 数据库初始化 2.4 配置环境变量 2.5 创建数据库 2.6 配置远程 2.7 测试远程 三、常用命令 四、用户创建和数据库权限 PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据

    2024年02月14日
    浏览(54)
  • PGSQL(PostgreSQL)数据库基础篇:PostgreSQL 的 主要优点 、 劣势 、体系结构 、核心功能 、安装教程。

    1.维护者是PostgreSQL Global Development Group,首次发布于1989年6月。 2.操作系统支持WINDOWS、Linux、UNIX、MAC OS X、BSD。 3.从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。 4.表和视图方面,PostgreSQL支持临时表,而物化视图,可以使用PL/pgSQL、PL/Perl、PL/Python或其

    2024年04月26日
    浏览(61)
  • PgSQL内核特性 - push-based pipeline 执行引擎

    PgSQL内核特性 - push-based pipeline 执行引擎 数据库的SQL执行引擎负责处理和执行SQL请求。通常情况下,查询优化器会输出物理执行计划,一般由一系列的算子组成。当前,有两种算子流水线构建方式:1)需求驱动的流水线,由算子不断从下级算子拉取数据;2)数据驱动的流水线

    2024年02月20日
    浏览(34)
  • Postgresql源码(84)语义分析——函数调用结构CallStmt的构造与函数多态的实现(pl参数)

    相关 《Postgresql源码(78)plpgsql中调用call proc()时的参数传递和赋值(pl参数)》 《Postgresql源码(79)plpgsql中多层调用时参数传递关键点分析(pl参数)》 《Postgresql源码(84)语义分析——函数调用结构CallStmt的构造与函数多态的实现(pl参数)》 本文涉及模块: 语法分析 、

    2024年02月07日
    浏览(38)
  • pgsql_全文检索_使用空间换时间的方法支持中文搜索

    PostgreSQL 14.2, compiled by Visual C++ build 1914, 64-bit 提到全文检索首先想到的就是ES(ElasticSearch)和Lucene,专业且强大。对于一些小众场景对于搜索要求不高,数据量也不大的情况, 上ES等有些繁重,增加工作量还增加了后期运维成本。 PgSql也支持全文检索原理和ES一样,支持分词和反

    2024年02月04日
    浏览(38)
  • 一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill

    返回一个数组,每一个元素都是一个对象,里面必然包含 status 属性 status 属性只会有两个值, fulfilled 或者 rejected ,非黑即白的既即视感 allSettled 总是走 then 的,也就是并发的 Promise 出现 reject 也不会走 catch ,需要自行遍历返回的数组,判断 status 来做错误捕获 对象中还有另

    2024年02月01日
    浏览(35)
  • psql: error: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432“ failed: No such file

    当我在linux debian版本安装postgres数据库遇到的问题: 帮我解决成功的方法如下:可以直接复制运行,需要看注释 步骤一: 步骤二: 注意这里的16是我postgres的版本,你要改成你对应的版本数字比如14就改成14,然后出现语言区域我一般默认直接回车 步骤三: 然后就成功了 引

    2024年02月02日
    浏览(42)
  • PL2303驱动程序不支持WINDOWS 11及后续版本的解决办法

    更新了Windows11之后,发现计算机—设备管理里面的PL2303(USB转串口的驱动程序)提示:PL2303驱动程序不支持WINDOWS 11及后续版本,请安装正确驱动程序。 具体的解决办法和步骤可参考如下: 安装旧版本的驱动(下载地址如下,或自己安装个旧版本的) PL2303 USB转串口驱动程序

    2024年02月11日
    浏览(34)
  • PostgreSQL 16新特性预览

    PostgreSQL 全球开发组于 2023-05-25 发布了 PostgreSQL 16 的第一个 beta 版本,可以下载试用。虽然细节可能会有所改变,但是该版本包含了 PostgreSQL 16 最终正式版中所有新特性的预览,让我们赶紧一睹为快吧! PostgreSQL 16 改进了查询执行时的性能,支持更多的并行查询,包括外连接

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包