暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

梧桐数据库(WuTongDB):DML之表函数

原创 鲁鲁 2024-06-14
466

表函数

表函数是那些生成一个行集合的函数,这个集合可以是由基本数据类型(标量类型)组成, 也可以是由复合数据类型(表的行)组成。他们的用法类似一个表、视图、或 FROM 子句里的子查询。表函数返回的列可以像一个表、视图、或者子查询列那样包含在 SELECT,JOIN,WHERE子句里。

如果表函数返回基本数据类型,那么单一结果列的名字匹配函数名。 如果表函数返回复合数据类型,那么多个结果列的名字和该类型的每个属性的名字相同。

可以在FROM子句中为表函数取一个别名,也可以不取别名。 如果一个函数在FROM子句中没有别名,那么将使用函数名作为结果表的名字。

一些例子:

CREATE TABLE foo (fooid int, foosubid int, fooname text);

CREATE FUNCTION getfoo(int) RETURNS SETOF foo AS $$
    SELECT * FROM foo WHERE fooid = $1;
$$ LANGUAGE SQL;

SELECT * FROM getfoo(1) AS t1;

SELECT * FROM foo
    WHERE foosubid IN (select foosubid from getfoo(foo.fooid) z
                           where z.fooid = foo.fooid);

CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);

SELECT * FROM vw_getfoo;

有时侯,把一个函数定义成根据不同的调用方法可以返回不同的列是很有用的。 为了支持这个,表函数可以声明为返回伪类型record。如果在查询里使用这样的函数, 那么我们必须在查询中声明预期的行结构,这样系统才知道如何分析和规划该查询。

最后修改时间:2024-08-05 09:13:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论