2011-03-31 144 views
3

我希望能夠選擇函數的代碼。 當我嘗試此查詢:PostgreSQL - 如何在pgAdmin中查看函數文本/源代碼?

select prosrc from pg_proc where proname = 'my_proc' 

我得到一個空列。

事情是,似乎列prosrc確實舉行功能文本。 當我嘗試此查詢:

select proname from pg_proc where prosrc ~* 'part of Function text' 

我得到正確的數量和功能的名稱。 它只是不顯示prosrc。 有什麼想法?

PostgreSQL 8.2。 pgAdmin III 1.12.2。

謝謝。

回答

2

我在PostgreSQL 9.0.3上使用pgAdmin III也遇到了這個問題。在我看來,這與pgAdmin III的字符串顯示正確顯示有關。如果你在命令提示符下執行它,那麼你應該沒問題。很多數據庫管理工具都會遇到字符串截斷問題。有趣的是,如果您在pgAdmin III中選擇prosrc單元格並將其與鍵盤一起復制,則可以粘貼輸出。這可能是某種奇怪的顯示錯誤。

+0

的確很有魅力! 另外 - 很高興知道這不是數據庫發佈問題。 謝謝隊友。 – bentaly 2011-04-06 08:28:15

+0

這是因爲你所看到的只是函數文本開始處的換行符。讓細胞垂直放大,你會看到其餘的。這不是一個錯誤。 – hbn 2014-09-11 16:02:21

+0

我會說這是一個用戶體驗錯誤。 – 2014-09-11 16:12:17

2

這是因爲prosrc的值通常以換行開始。通常創建一個函數,當你開始$$後,新的行(或$任何$)引用的函數文本:如果你定義爲

CREATE FUNCTION myfunction() RETURNS integer AS $$ 
    SELECT 1 
$$ LANGUAGE sql; 

CREATE FUNCTION myfunction() RETURNS integer AS $$SELECT 1$$ LANGUAGE sql; 

將不會有任何換行符在函數文本中。

,你可以砍下領導換行與LTRIM函數:

SELECT ltrim(prosrc, E'\x0a') FROM pg_proc WHERE proname = 'myfunction'; 

另外,如果你垂直調整行中pgAdmin的,你可以看到完整的價值。

0

文件>選項>查詢工具>查詢編輯器>最大。每列字符數

或者只是在對象瀏覽器中查看它。