PostgreSQL的:设置变量等于阵列中的
我有一个表newb
,看起来像这样的特定条目:PostgreSQL的:设置变量等于阵列中的
tablename | columnname
-----------------------
walls | id
floors | rowid
首先我创建磁盘阵列:
CREATE TABLE finalsb
(
tabnam newb ARRAY
);
然后我把数据从一个表格到阵列:
INSERT INTO finalsb VALUES(ARRAY(SELECT newb FROM newb));
以下语句显示'id'
从表福利局:
SELECT tabnam[1].columnname FROM finalsb;
我想要做的事,如:
Declare colvar varchar,tabvar varchar
colvar = Select tabnam[1].columnname from finalsb;
tabvar = Select tabnam[1].tablename from finalsb;
我的主要目标是使用:
SELECT * FROM tabvar WHERE colvar = "somevalue";
谁能告诉我怎样才能申报SELECT
语句作为变量?
你必须使用select ... into variable
结构:
do $$
declare
colvar varchar;
tabvar varchar;
begin
select tabnam[1].columnname into colvar from finalsb;
select tabnam[1].tablename into tabvar from finalsb;
raise notice 'tabvar: %, colvar: %', tabvar, colvar;
end
$$;
运行动态SQL PLPGSQL的execute
需要:
execute format('SELECT * FROM %s WHERE %s = "somevalue"', quote_ident(tabvar), quote_ident(colvar));
例如在功能return语句的形式:
return query execute format('SELECT * FROM %s WHERE %s = "somevalue"', quote_ident(tabvar), quote_ident(colvar));
推荐阅读:
https://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-
谢谢!这是我需要的! – nk1995coder
我想执行命令:select * from tabvar where colvar = 2786683;基本上我想使用从表名Select * from tablename where columnname = 2786683.问题是我得到错误关系“tabvar”不存在。 – nk1995coder
编辑答案:看一看。 –
你不能'SELECT ... FROM'一个'VARCHAR'变量('tabvar')。你在这里试图做什么?你的问题不清楚。 – Nicarus
我想为变量tabname [....命令中的任何值分配一个变量。 @Nicarus – nk1995coder