PL/pgSQL 行类型

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

PL/pgSQL 行类型介绍

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

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

row_variable table_name%ROWTYPE;
row_variable view_name%ROWTYPE;

要访问行变量的单个字段,请使用点符号 ( .),如下所示:

row_variable.field_name

PL/pgSQL 行类型示例

我们将使用 PostgreSQL Sakila 示例数据库中的 actor 表来展示行类型的工作方式:

以下示例显示了演员 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 表中的行相同。
  • 其次,使用语句将 actor_id 列中值为 10的行分配给 selected_actor 变量 select into 。
  • 第三,使用 raise notice 语句显示所选演员的名字和姓氏。它使用点表示法访问 first_name 和 last_name 字段。

概括

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