आप पहचानकर्ताओं (=कॉलम नाम) के रूप में पैरामीटर का उपयोग नहीं कर सकते हैं, इसके लिए आपको गतिशील एसक्यूएल की आवश्यकता है। और इसके लिए PL/pgSQL की आवश्यकता होती है:
CREATE OR REPLACE FUNCTION day_entries(p_id int, p_column text)
RETURNS BIGINT[]
AS
$$
declare
l_result bigint[];
begin
execute format('SELECT %I FROM days WHERE id = $1', p_column)
using p_id
into l_result;
return l_result;
end;
$$
LANGUAGE plpgsql;
format() डायनेमिक SQL बनाते समय पहचानकर्ताओं के साथ ठीक से व्यवहार करता है। $1
एक पैरामीटर प्लेसहोल्डर है और उसके लिए मान using p_id
. के साथ पास किया जाता है execute
. का खंड बयान।