2013-04-25 69 views

回答

1

爲什麼不使用視圖?可能是views將有助於你的情況。

8

我不知道任何可能性。只有psql基於psql變量的解決方法,但有很多限制 - 使用此查詢參數很困難。

postgres=# \set whoami 'SELECT CURRENT_USER;' 
postgres=# :whoami 
current_user 
-------------- 
pavel 
(1 row) 
+0

基本上看來,意見只是更好,不是嗎?我想我在找什麼(本地別名)只是不是在數據庫管理員的「精神」。每當我設置數據庫時,我都應該添加一些常見的視圖。 – lajarre 2013-04-26 14:33:11

+0

取決於你想要什麼。但主要使用的意見是一個簡單的查詢(通常簡化與數據的工作)和安全原因,所以可能你會使用一個意見:) – 2013-04-27 05:23:01

1

如何使用UDF?你可以創建一個返回表(一組)的UDF,然後你可以這樣查詢它:select * from udf();

它不那麼幹淨,但它比沒有好,它是便攜式。 UDF也可以採用參數。

+1

我想要的東西,不存儲任何東西在數據庫中,但這不是「精神」是如何工作的,所以沒有很好的答案。對我而言,觀點更適合,所以我會接受一個關於觀點的答案。 – lajarre 2013-04-28 16:40:25

2

帕維爾的答案几乎是正確的,除非你可以以其他方式使用參數。

\set s 'select * from ' 
\set l ' limit 10;' 

下面的命令後

:s agent :l 

將等於

select * from agent limit 10; 

根據http://www.postgresql.org/docs/9.0/static/app-psql.html

如果一個不帶引號的參數以冒號(:)開頭,則將其作爲psql 變量,而該變量的值將用作參數 。如果變量名被單引號括起來(例如 :'var'),則它將作爲SQL文字轉義並且結果將被用作參數 。如果變量名稱被雙重 引號包圍,則它將作爲SQL標識符轉義,結果將爲 用作參數。

也可以使用反引號來運行外殼命令

參數括在反引號(')內容被當作被傳遞給外殼的命令 線。該命令的輸出(將任何 尾隨換行符刪除)作爲參數值。以上 轉義序列也適用於反引號。