首页 > 解决方案 > 在 For 循环中进行选择

问题描述

我正在尝试编写这样的 For 循环:

DO
$$
DECLARE
rec TEXT  ;
rec1 record  ;
BEGIN
FOR rec IN 
select my_schema_name from public.table1
loop 
PERFORM set_config('search_path', rec,false);
execute 'select *  from table2 where status  = 'NEW' into rec1' ;     
RAISE NOTICE 'Record is : %', rec1;
END LOOP;    
END;
$$
LANGUAGE plpgsql;

但我收到语法错误:

错误:“进入rec1”处或附近的语法错误

有人可以帮助我编写具有 WHERE 子句并在 For 循环中执行的 Select 语句的正确语法。

标签: databasepostgresqlselectplpgsql

解决方案


您必须在 where 子句中用双引号括起您的字符串,例如

数据样本

CREATE TABLE t (id int, status text);
INSERT INTO t VALUES (42,'bar');

匿名代码块

DO $$
DECLARE
rec1 record  ;
BEGIN
EXECUTE 'SELECT * FROM t WHERE status=''bar''' INTO rec1;     
RAISE NOTICE 'The answer is %', rec1.id;
END; $$ LANGUAGE plpgsql;

NOTICE:  The answer is 42

推荐阅读