1
我正在使用Postgres upsert示例。我可以讓它像示例中所示那樣工作,但我需要使函數調用變爲動態。該功能是帶綁定參數的用戶定義函數
CREATE TABLE db (a INT PRIMARY KEY, b TEXT);
CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
$$
BEGIN
LOOP
UPDATE db SET b = data WHERE a = key;
IF found THEN
RETURN;
END IF;
BEGIN
INSERT INTO db(a,b) VALUES (key, data);
RETURN;
EXCEPTION WHEN unique_violation THEN
END;
END LOOP;
END;
$$
LANGUAGE plpgsql;
我能得到它的工作是這樣的:
SELECT merge_db(1, 'david');
SELECT merge_db(1, 'dennis');
但我想這樣做:
SELECT merge_db($1,$2);
這可能嗎?我知道我可以通過串聯字符串來實現這一點,但我想準備我的聲明並使用綁定參數。
如果你想打電話'merge_db'?從客戶端程序?從另一個PostgreSQL函數? –
客戶端程序。我想使用像我將使用「INSERT INTO表VALUES($ 1,$ 2)」,然後用動態值執行語句。 – MParker