database - 在 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 语句的正确语法。
解决方案
您必须在 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
推荐阅读
- java - 将 java.time.LocalDate 与 postgres 日期进行比较的问题
- php - php用参数调用python脚本但没有输出
- c# - 在 UWP 中运行时重新生成 DataGrid 列
- angular - Material Angular 6中的单行水平芯片列表
- java - Spring JPA:外部事务能否回滚成功的内部事务
- awk - 如何打印此 Awk 命令以便输出到新文件?
- javascript - 获取用户输入并提醒图像
- arrays - 为什么 Swift 不将元素作为字典的值附加到数组中?
- java - 在未执行 thread.sleep 之前调用的方法
- glsl - 与线的距离——Shadertoy