0
我有由具有像「紅」,「綠」,「藍」,「黃」不同的值名稱顏色表中的一列。創建變量名動態 - PostgreSQL的
我需要知道如何通過其獨特的價值動態創建變量名。
即每個變量名稱將是的值。
在上述情況下爲四個變量名被創建,即「紅」,「綠」,「藍」,「黃色」。
要明確
基本上它是宣佈的聲明部分中的變量其中的變量名可以是動態的
我有由具有像「紅」,「綠」,「藍」,「黃」不同的值名稱顏色表中的一列。創建變量名動態 - PostgreSQL的
我需要知道如何通過其獨特的價值動態創建變量名。
即每個變量名稱將是的值。
在上述情況下爲四個變量名被創建,即「紅」,「綠」,「藍」,「黃色」。
要明確
基本上它是宣佈的聲明部分中的變量其中的變量名可以是動態的
假設上下文是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
不合適時,這些值需要動態傳送。
如果您不知道名稱(如果它不是動態查詢),您將如何使用這些變量? –
由於PostgreSQL本身沒有「變量」,有沒有可能多解釋一下?也許簡要描述一下你希望代碼如何工作? –
基本上它聲明瞭變量名稱可以是動態的聲明部分中的變量 – user2664380