0

我在表格中有一个名称为 color 的列,它具有不同的值,如“Red”、“Green”、“Blue”、“Yellow”。

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

即每个变量名都是值。

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

要清楚

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

4

1 回答 1

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. text当不合适时,需要动态转换值。

于 2013-08-29T14:51:58.163 回答