我在表格中有一个名称颜色的列,其中包含"红色","绿色","蓝色","黄色& #34;
我需要知道如何通过不同的值动态创建变量名称。
即每个变量名称都是值。
在上述情况下,要创建四个变量名称,即" Red"," Green"," Blue"," Yellow"。
要清楚
基本上它是在声明部分声明变量名称可以是动态的变量
答案 0 :(得分:1)
假设上下文是plpgsql
语言,则DECLARE
部分中不可能包含动态内容。
无论如何,动态创建的变量很少使用,即使它们在技术上是可行的。在其他解释语言中,解决对可变数量变量的需求的常用方法是使用由名称索引的map
(perl)或array
(php),因为它们是变量名。
在plpgsql
中,您可以使用hstore
类型作为最接近的等价物。
示例:
DECLARE
vars hstore:=hstore('');
BEGIN
-- assign a pseudo-variable with name='Blue' and value='abc'
vars:=vars||'Blue=>abc';
-- load values from a query selecting names and associated values
for color,val in select * from colors
loop
vars:=vars||(color=>val::text);
end loop;
-- Get the value of the pseudo-variable for 'Red', assuming it came out
-- in the query's results
raise notice 'the value for Red is: %', vars->'Red';
END;
与真实变量相比的主要缺点是内容只有一种类型:text
。 <{1}}不合适时,需要动态投放值。