我想創建一個引用PostgreSQL 8.4中的臨時表的函數。根據我的研究,似乎最好的方法是使用EXECUTE
命令從定義的字符串執行查詢。在函數中使用EXECUTE時PostgreSQL語法錯誤
不幸的是,我在嘗試創建函數時出現了一個奇怪的語法錯誤。
我現在的功能定義如下:
CREATE OR REPLACE FUNCTION example() RETURNS void AS $$
EXECUTE 'INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3 from temp_table';
$$ LANGUAGE SQL;
我得到的錯誤是:
ERROR: syntax error at or near "'INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3 from temp_table'"
LINE 2: execute 'INSERT INTO table1 (col1, col2, col3) SELECT col1...
似乎不管什麼是真正的字符串文字中,我得到了同樣的錯誤。
我的問題是,1)使用EXECUTE功能的正確語法是什麼,2)是否有更好的方式來編寫這樣的引用臨時表的函數?
我不能只需將查詢包含在正文中即可因爲它引用了一個在函數創建時不存在的臨時表。唯一的方法是使用PL/pgSQL函數嗎? –