【发布时间】:2014-01-13 08:43:22
【问题描述】:
我有一个变量是表的名称。如何在查询中使用变量从中选择或更新,例如:
create or replace function pg_temp.testtst ()
returns varchar(255) as
$$
declare
r record; t_name name;
begin
for r in SELECT tablename FROM pg_tables WHERE schemaname = 'public' limit 100 loop
t_name = r.tablename;
update t_name set id = 10 where id = 15;
end loop;
return seq_name;
end;
$$
language plpgsql;
它显示 错误:关系“t_name”不存在
【问题讨论】:
-
尝试 tname 作为表名。
-
根据我对 postgresql 的记忆,你有更好的机会让它评估动态生成的 SQL(用
'update '+t_name+' set id = 10 where id = 15'做一些事情)。查找 PREPARE 和 EXECUTE 语句。 -
我想是 t-sql 语法
标签: postgresql select plpgsql dynamic-sql