【问题标题】:Doing a select in a For loop在 For 循环中进行选择
【发布时间】:2021-03-20 17:46:32
【问题描述】:

我正在尝试编写这样的 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;

但我收到语法错误:

错误:在 "' into rec1'" 处或附近出现语法错误

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

【问题讨论】:

  • 'select * from table2 where status = 'NEW' into rec1'写成'select * from table2 where status = ''NEW'' into rec1'
  • 没有任何理由使用EXECUTE声明。

标签: database postgresql select plpgsql


【解决方案1】:

你必须在 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

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多