PostgreSQL – 记录类型变量
PostgreSQL 使用记录类型变量 只需充当结果集行的占位符,类似于行类型变量。但是,与行类型变量不同,它们没有预定义的结构。它们的结构只有在为它们分配一行后才确定。记录类型变量在重新分配给另一行后也可以更改其结构。
宣言:
我们可以通过简单地使用变量名后跟记录关键字来声明记录类型变量。
Syntax:
variable_name record;
我们可以使用点符号 (.) 来访问记录类型变量中的任何字段。需要注意的是,我们必须在访问它的内容之前分配一个记录类型变量,否则我们会得到一个错误。
Syntax:
record_variable.field_name;
首先,我们使用以下命令创建一个示例表来执行示例:
CREATE TABLE employees (
employee_id serial PRIMARY KEY,
full_name VARCHAR NOT NULL,
manager_id INT
);
然后我们将数据插入到我们的员工表中,如下所示:
INSERT INTO employees (
employee_id,
full_name,
manager_id
)
VALUES
(1, 'M.S Dhoni', NULL),
(2, 'Sachin Tendulkar', 1),
(3, 'R. Sharma', 1),
(4, 'S. Raina', 1),
(5, 'B. Kumar', 1),
(6, 'Y. Singh', 2),
(7, 'Virender Sehwag ', 2),
(8, 'Ajinkya Rahane', 2),
(9, 'Shikhar Dhawan', 2),
(10, 'Mohammed Shami', 3),
(11, 'Shreyas Iyer', 3),
(12, 'Mayank Agarwal', 3),
(13, 'K. L. Rahul', 3),
(14, 'Hardik Pandya', 4),
(15, 'Dinesh Karthik', 4),
(16, 'Jasprit Bumrah', 7),
(17, 'Kuldeep Yadav', 7),
(18, 'Yuzvendra Chahal', 8),
(19, 'Rishabh Pant', 8),
(20, 'Sanju Samson', 8);
表格是:
示例 1:
以下查询显示了我们如何在select into语句中使用记录类型变量。
do
$$
declare
rec1 record;
begin
-- select the employee
select employee_id,full_name,manager_id
into rec1
from employees
where employee_id = 13;
raise notice '% - %(Manager id=%)', rec1.employee_id, rec1.full_name, rec1.manager_id;
end;
$$
language plpgsql;
输出:
在此示例中,我们执行了以下步骤:
- 我们首先在声明区声明了记录类型变量rec1 。
- 然后,我们使用 select into 语句从表employees中选择一行到员工 ID 为 13 的变量rec1中。
- 然后我们使用点符号来访问变量rec1的内容,然后将信息打印出来
示例 2:
以下查询显示了我们如何在for 循环语句中使用记录类型变量。
do
$$
declare
rec1 record;
begin
for rec1 in select employee_id, full_name
from employees
where employee_id > 12
order by employee_id
loop
raise notice '% - %', rec1.employee_id, rec1.full_name;
end loop;
end;
$$;
输出:
这个例子展示了我们如何重新分配一个记录类型变量。
在此示例中,我们执行了以下步骤:
- 我们首先在声明区声明了一个记录类型变量rec1 。
- 然后我们使用for 循环语句来遍历employees 表的内容。在每次迭代中,我们为记录类型变量rec1分配了一个新行。
- 然后我们使用点符号来访问变量rec1的内容,然后为每次迭代打印出信息。