0
我想將我的應用程序代碼中的以下兩個sql語句合併到postgresql中的某個函數中,但我遇到了一些麻煩。 這裏有兩個SQL查詢我想結合:如何將兩個sql語句合併爲一個函數
UPDATE userrange f
SET UsedYesNo = true, user_id=user_id, updateddatetime=now()
WHERE f.uservalue IN(
SELECT a.uservalue FROM userrange a WHERE UsedYesNo=false Order By id ASC Limit 1)
RETURNING a.uservalue;
從上面的語句結果在此查詢中使用:
INSERT INTO widget
VALUES(DEFAULT, uservalue, 'test','123456778',1,"testservername", now(), Null)
到目前爲止,我已經建立了功能,只是做的第一update語句,就像這樣:
CREATE or REPlACE FUNCTION create_widget(IN user_id integer, IN password character varying DEFAULT NULL::character varying)
RETURNS TABLE(uservalue integer) AS
$BODY$
BEGIN
RETURN QUERY
UPDATE userrange f SET UsedYesNo = true, user_id=user_id, updateddatetime=now()
WHERE f.uservalue IN(
SELECT a.uservalue FROM userrange a WHERE UsedYesNo=false Order By id ASC Limit 1)
RETURNING a.uservalue;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
它編譯,但是當我執行它,它失敗,出現錯誤:
ERROR: missing FROM-clause entry for table "a" LINE 4: RETURNING a.uservalue
我只是用googling這個錯誤來看看我怎麼修復它......但我可以在DECLARE部分中創建一個名爲uservalue的變量 並在輔助查詢中使用它嗎?或者我可以將sql組合成一個
謝謝。
的關鍵詞'DEFAULT'可以在'VALUES'表達式中使用,但不能在一個'SELECT'語句。 –
謝謝,我錯過了。我已更新我的回覆以反映這一變化。 – bma