我在尋找的是我稱之爲「參數化視圖」的內容。當在互聯網上瀏覽時,我瞭解到PostgreSQL不支持這種功能,而應該使用函數。功能中的參數化視圖或通用返回值
所以我創建了一個功能:
CREATE OR REPLACE FUNCTION public.student_get_byschool(
_schoolid integer
) RETURNS SETOF student AS
$body$
SELECT * FROM student WHERE schoolid=_schoolid;
$body$
LANGUAGE 'sql';
不過,如果我想通過加入其他記錄來選擇多一點的是學生,我RETURNS
條款是不正確的了。我可以解決這個問題有兩種方法:
- 使用
RETURNS SETOF RECORD
,但似乎在我的C#.NET應用程序的一些問題,因爲它沒有給我任何列定義。 - 創建一個新類型,它包含我想要返回的所有數據,但是這會引入冗餘,這是我非常想在數據庫設計中避免的。
我現在的問題是,這些是唯一的選擇,還是更有可能的。請注意,我剛開始使用PostgreSQL和C#.NET。
使用'returns table(col1 integer,...)' – 2013-03-08 14:16:31