我想傳遞列名作爲參數。在這裏,我寫了一個查詢來從表用戶中選擇「user_id」列,但是它將user_id作爲文本返回。列名作爲變量
EXECUTE format('SELECT $1 FROM users
WHERE name=''name''')
USING 'user_id';
我該怎麼做?
我想傳遞列名作爲參數。在這裏,我寫了一個查詢來從表用戶中選擇「user_id」列,但是它將user_id作爲文本返回。列名作爲變量
EXECUTE format('SELECT $1 FROM users
WHERE name=''name''')
USING 'user_id';
我該怎麼做?
你不能使用動態SQL來獲得這個結果嗎?是這樣的:
EXECUTE 'SELECT '|| get_columns()|| ' FROM table_name'
根據documentation ...
注意參數符號只能用於數據值 - 如果你 要使用動態確定表或列名,你必須 將它們以文本方式插入到命令字符串中。例如,如果 前面的查詢需要對動態選擇的表來完成...
因此,你需要像這樣
EXECUTE 'SELECT '
|| quote_ident(p_column)
|| ' FROM users '
|| ' WHERE name = $1'
INTO v_result
USING name;
p_column
被作爲參數收到的列名的功能。
v_result
是存儲結果的變量。如果你不關心結果,這個INTO
部分可以被丟棄。
name
是提供給where條件的值。必須在你的函數中的某個地方,或者作爲一個參數。
您無法傳遞列名作爲參數。您需要更改查詢字符串。 –