【问题标题】:Syntax error in PL/pgSQL FOR loopPL/pgSQL FOR 循环中的语法错误
【发布时间】:2014-04-02 16:46:34
【问题描述】:

我正在尝试使用FOR 循环:

create or replace function update_revisions() returns trigger as 
$$ 
begin 
    declare col_name declare col_name information_schema.columns%ROWTYPE; 

    for col_name in
       select column_name from information_schema.columns
       where table_name='t'
    loop 
        insert into debug_table values (col_name); 
    end loop;
end;
$$
language plpgsql; 

但它总是说:

'for' 处或附近的语法错误

有人可以给我提示一下它有什么问题吗?

【问题讨论】:

标签: sql postgresql loops plpgsql


【解决方案1】:

迫在眉睫的问题

语法无效。解开:

create or replace function update_revisions()
  returns trigger as 
$$ 
declare
   col_name information_schema.columns%ROWTYPE; 
begin 
   for col_name in
      select column_name from information_schema.columns
      where table_name='t'
   loop 
      insert into debug_table values (col_name); 
    end loop;
end;
$$  language plpgsql;

更多问题

INSERT INTO debug_table (target_column)  -- with column definition list!
SELECT column_name
FROM   information_schema.columns
WHERE  table_name = 't'
AND    table_schema = 'public';          -- your schema

【讨论】:

  • 谢谢,现在可以使用了。我将研究非唯一的表名。插入语句仅用于调试目的,而不是实际的生产代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多