动态创建变量名称 - Postgresql

时间:2013-08-29 06:50:20

标签: postgresql

我在表格中有一个名称颜色的列,其中包含"红色","绿色","蓝色","黄色& #34;

我需要知道如何通过不同的值动态创建变量名称。

即每个变量名称都是值。

在上述情况下,要创建四个变量名称,即" Red"," Green"," Blue"," Yellow"。

要清楚

基本上它是在声明部分声明变量名称可以是动态的变量

1 个答案:

答案 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}}不合适时,需要动态投放值。