天天看點

《PostgreSQL伺服器程式設計》一一3.4 傳回記錄

本節書摘來自華章計算機《postgresql伺服器程式設計》一書中的第3章,第3.4節,作者:(美)hannu krosing, jim mlodgenski, kirk roybal 著

,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

到目前為止,我們所有的函數例子都描述了return子句中的一個簡單的标量值。對于更為複雜的傳回類型,我們有幾種選擇。其中一種選擇就是按照表定義傳回一組記錄。就本例而言,我們假設,你正在開發一個大型的軟體開發更新過程,該程式使用了一個名稱/值對的表結構來進行設定存儲。要求你改變表結構,從鍵和分值欄改變到一系列的列,此時列的名稱就是鍵的名稱。順便提一句,在你所部署的每個軟體版本中,你都需要儲存設定。

通過檢視現有表中的create table語句,我們發現:

《PostgreSQL伺服器程式設計》一一3.4 傳回記錄

當你對表運作了一個select語句,你會發現并沒有太多的設定,但這些設定已有不少版本,為此你需要建立一個更加明确的新表。

《PostgreSQL伺服器程式設計》一一3.4 傳回記錄

通過将設定資料轉化成新的格式,我們可以實作一個insert語句和一個函數。該函數能夠迅速地以新的表格式傳回我們的資料。

我們繼續定義函數:

《PostgreSQL伺服器程式設計》一一3.4 傳回記錄
《PostgreSQL伺服器程式設計》一一3.4 傳回記錄
《PostgreSQL伺服器程式設計》一一3.4 傳回記錄
《PostgreSQL伺服器程式設計》一一3.4 傳回記錄

上面的函數向調用查詢傳回了一個簡單的資料行。該行包括了所有設定,這些設定之前被定義為鍵/值對,但是現在是明确的字段。通過改善函數和最終表,我們可以将設定的資料類型改得更加明确。但是,我隻是一個作者,并不是“真正”的開發者,是以我把那個留給你吧!

接下來,使用函數進行轉變:

《PostgreSQL伺服器程式設計》一一3.4 傳回記錄

大功告成!你可以在新的表結構中找到這些以表格形式展現的資料。

繼續閱讀