2012-12-07 53 views
3

因此,這裏是我的問題,使用一個變量,如何選擇查詢PostgreSQL的

我有一個過程:

DECLARE 
serialvar INTEGER; 

BEGIN 
serialvar := NEW.battery_serial; 

CREATE OR REPLACE VIEW battery_vue 
AS 
SELECT * FROM cells WHERE battery_serial = serialvar; 
RETURN NEW; 
END; 

但是當程序的觸發器被激活我有一個錯誤說:

ERROR: the column « serialvar » does not exist

LINE 3: SELECT * FROM cells WHERE battery_serial = serialVar

+0

也許你需要'TEMPORARY VIEW'?它將在會話結束時被刪除,並且不會與其他會話發生衝突。**詳細信息[here](http://www.postgresql.org/docs/current/static/sql-createview.html)。 –

回答

1

您必須將值傳遞到動態SQL像

BEGIN 

EXECUTE $$CREATE OR REPLACE VIEW battery_vue 
AS 
SELECT * FROM cells WHERE battery_serial = $$ || NEW.battery_serial; 

RETURN NEW; 

END; 

這種方式你採取新的價值,如果它是1(例如),那麼battery_vue會告訴你只有cells其中battery_serial = 1。這是你想要的嗎? (下一個插入或任何將重新創建的視圖,可能與不同battery_serial。)

+0

謝謝你的答案,它的工作原理!,是的,我希望視圖只顯示Battery_serials = 1 – Alroc