2013-08-29 114 views
0

我有由具有像「紅」,「綠」,「藍」,「黃」不同的值名稱顏色表中的一列。創建變量名動態 - PostgreSQL的

我需要知道如何通過其獨特的價值動態創建變量名。

即每個變量名稱將是的值。

在上述情況下爲四個變量名被創建,即「紅」,「綠」,「藍」,「黃色」。

要明確

基本上它是宣佈的聲明部分中的變量其中的變量名可以是動態的

+1

如果您不知道名稱(如果它不是動態查詢),您將如何使用這些變量? –

+1

由於PostgreSQL本身沒有「變量」,有沒有可能多解釋一下?也許簡要描述一下你希望代碼如何工作? –

+0

基本上它聲明瞭變量名稱可以是動態的聲明部分中的變量 – user2664380

回答

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不合適時,這些值需要動態傳送。