我在表格中有一个名称为 color 的列,它具有不同的值,如“Red”、“Green”、“Blue”、“Yellow”。
我需要知道如何通过不同的值动态创建变量名。
即每个变量名都是值。
在上述情况下,要创建四个变量名称,即“Red”、“Green”、“Blue”、“Yellow”。
要清楚
基本上它是在声明部分中声明变量,其中变量名称可以是动态的
我在表格中有一个名称为 color 的列,它具有不同的值,如“Red”、“Green”、“Blue”、“Yellow”。
我需要知道如何通过不同的值动态创建变量名。
即每个变量名都是值。
在上述情况下,要创建四个变量名称,即“Red”、“Green”、“Blue”、“Yellow”。
要清楚
基本上它是在声明部分中声明变量,其中变量名称可以是动态的
假设上下文是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
. text
当不合适时,需要动态转换值。