SQL函数返回类型:TABLE vs SETOF记录
发布时间:2020-12-12 16:28:38 所属栏目:MsSql教程 来源:网络整理
导读:返回TABLE和SETOF记录的函数有什么区别,其他所有的相等. CREATE FUNCTION events_by_type_1(text) RETURNS TABLE(id bigint,name text) AS $$ SELECT id,name FROM events WHERE type = $1;$$LANGUAGE SQL STABLE;CREATE FUNCTION events_by_type_2(text) RET
返回TABLE和SETOF记录的函数有什么区别,其他所有的相等.
CREATE FUNCTION events_by_type_1(text) RETURNS TABLE(id bigint,name text) AS $$ SELECT id,name FROM events WHERE type = $1; $$LANGUAGE SQL STABLE; CREATE FUNCTION events_by_type_2(text) RETURNS SETOF record AS $$ SELECT id,name FROM events WHERE type = $1; $$LANGUAGE SQL STABLE; 这些功能似乎返回相同的结果.见这SQLFiddle. 解决方法当返回SET OF记录时,输出列不输入并未命名.因此,此表单不能直接在FROM子句中使用,就好像它是一个子查询或表.也就是说,当发行时: SELECT * from events_by_type_2('social'); 我们得到这个错误:
它可以通过SQL调用者“转换”到正确的列类型.此表单可以正常工作: SELECT * from events_by_type_2('social') as (id bigint,name text); 并得出: id | name ----+---------------- 1 | Dance Party 2 | Happy Hour ... 为此,SET OF记录被认为不太实际.仅当提前不知道结果的列类型时才使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |