PostgreSQL 教程: PL/pgSQL rowtype 行类型

八月 20, 2023

摘要:在本教程中,您将学习如何使用 PL/pgSQL 行类型来声明保存结果集完整行的行变量。

PL/pgSQL 行类型简介

要存储select into语句返回的结果集的整行,可以使用行类型变量或行变量。

您可以使用以下语法声明一个与一个表行具有相同数据类型的变量

row_variable table_name%ROWTYPE;
row_variable view_name%ROWTYPE;

要访问行变量的各个字段,可以使用点号 (.),如下所示:

row_variable.field_name

PL/pgSQL 行类型示例

我们将使用示例数据库中的actor表来展示行类型的工作原理:

img

以下示例显示了 id 为 10 的演员的名字和姓氏:

do $$
declare
   selected_actor actor%rowtype;
begin
   -- select actor with id 10   
   select * 
   from actor
   into selected_actor
   where actor_id = 10;

   -- show the number of actor
   raise notice 'The actor name is % %',
      selected_actor.first_name,
      selected_actor.last_name;
end; $$

怎么运行的。

  • 首先,声明一个名为selected_actor的行变量,其数据类型与actor表中的行相同。
  • 其次,使用select into语句将actor_id列值为 10 的行赋给selected_actor变量。
  • 第三,使用raise notice语句显示查出的演员的名字和姓氏。它使用点符号访问first_namelast_name字段。

概括

  • 使用行类型变量 (%ROWTYPE) 来保存select into语句返回的结果集中的一行。