我正在寻找的是我所谓的“参数化视图”。在网上浏览时,我了解到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。
答案 0 :(得分:1)
根据documentation for CREATE FUNCTION
,您可以使用OUT
参数或RETURNS TABLE
。 RETURNS TABLE
往往更具可读性。
This Postgres Online article可能会被证明是有趣的,虽然我没有仔细阅读它以检查它并确保它是最新的和正确的。