PL/pgSQL学习笔记之十一

简介:

http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html

39.3.4. Row 类型

name table_name%ROWTYPE;
name composite_type_name;

一个复合类型被称为row变量(或row-类型变量)。这样的变量可以保持一整行当select或for 查询的结果,该查询的列集合正好匹配声明的变量的数据类型。此行值得单个域值可以通过通常的点引用来访问,例如:rowvar.field。

通过使用table_name%ROWTYPE 标记法,一个row变量可以被声明为与现存的表或视图的行拥有同样的类型;或通过给出一个符合结构的类型名称。(因为每个表都有一个关联的同名的复合类型,实际上是否写%ROWTYPE都没有关系,但是带有%ROWTYPE的形式更加具备可移植性。)

函数的参数可以是复合类型(完整的表行)。在此时,相应的$n就是一个row变量,而域则可以被从中进行选出,例如: $1.user_id。

Only the user-defined columns of a table row are accessible in a row-type variable, not the OID or other system columns (because the row could be from a view). The fields of the row type inherit the table's field size or precision for data types such as char(n).

在一个row变量中,只有用户定义的表的列名可以被访问,OID或者其他的系统列不可访问(因为这些可能来自视图)。这些行当域继承了表的域的数据类型的大小和精度,如char(n)。

这里有一个使用复合数据类型的例子,table1和table2是现存的表,而且至少拥有如下提及的域:

复制代码
CREATE FUNCTION merge_fields(t_row table1) RETURNS text AS $$
DECLARE
    t2_row table2%ROWTYPE;
BEGIN
    SELECT * INTO t2_row FROM table2 WHERE ... ;
    RETURN t_row.f1 || t2_row.f3 || t_row.f5 || t2_row.f7;
END;
$$ LANGUAGE plpgsql;

SELECT merge_fields(t.*) FROM table1 t WHERE ... ;
复制代码
目录
相关文章
|
Ubuntu Linux Shell
9-19|linux由于修改了时间,我现在想调成北京时间
9-19|linux由于修改了时间,我现在想调成北京时间
|
关系型数据库 MySQL 数据库
【MySQL】:超详细MySQL完整安装和配置教程
【MySQL】:超详细MySQL完整安装和配置教程
41891 5
|
Java 测试技术 Maven
单元测试添加运行参数的maven插件
单元测试添加运行参数的maven插件
132 0
|
存储 传感器 数据采集
《云上新势力 CLOUD IMAGINE》——Part 2 演讲/文章合集——文章3:《产业前瞻:边缘计算剑指何方?》(3)
《云上新势力 CLOUD IMAGINE》——Part 2 演讲/文章合集——文章3:《产业前瞻:边缘计算剑指何方?》(3)
149 0
|
存储 弹性计算 运维
雪球引入阿里云云原生内存数据库Tair,实现成本降低50%
在满足雪球行情业务高并发、低时延需求的同时,还解决了成本高昂、扩缩容不便、运维困难等问题。
508 0
雪球引入阿里云云原生内存数据库Tair,实现成本降低50%
|
Linux Docker 容器
容器的进程与namespace、rootfs
一:容器是什么 容器的本质是一种特殊的进程。 在linux容器中有两个重要的概念:Namespace和Cgroups。 Namespace的作用是隔离,让进程只能看到Namespace中的世界; Cgroups 的作用是限制,让这个“世界”围着一个看不见的墙。
1236 0
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!