loop variable of loop over rows must be a record variable or list of scalar variables
时间: 2024-04-08 12:31:18 浏览: 177
Control_maximum_number_of_rows_in_a_table.zip
这个错误通常是在 PostgreSQL 的存储过程中使用错误的循环变量类型导致的。当使用 `FOR` 循环遍历行时,循环变量必须是记录类型的变量或标量变量的列表。
以下是一个示例,展示了如何在存储过程中正确使用 `FOR` 循环遍历行:
```sql
CREATE OR REPLACE FUNCTION your_procedure_name()
RETURNS void
AS $$
DECLARE
row_data RECORD; -- 记录类型的变量,用于存储行数据
BEGIN
FOR row_data IN SELECT column1, column2 FROM your_table LOOP
-- 可以在循环中使用 row_data.column1 和 row_data.column2 来访问行数据
RAISE NOTICE 'Column 1: %, Column 2: %', row_data.column1, row_data.column2;
END LOOP;
RETURN;
END;
$$
LANGUAGE plpgsql;
```
在上面的示例中,我们创建了一个名为 `your_procedure_name` 的存储过程。在 `FOR` 循环中,我们声明了一个记录类型的变量 `row_data`,用于存储行数据。在循环中,我们可以使用 `row_data.column1` 和 `row_data.column2` 来访问每一行的列数据。
请确保在循环中使用正确的变量类型来遍历行数据,以避免出现 "loop variable of loop over rows must be a record variable or list of scalar variables" 这个错误。
阅读全文