在pl / pgsql中编写一个函数

问题描述 投票:-1回答:1

这是我的查询。

select origindept, `count(am_course_name)` as total_course
from am_courseoffered
group by origindept;

我正在尝试创建一个将返回此查询的函数。

CREATE OR REPLACE  FUNCTION getcourse () 
 RETURNS TABLE (
course_origindept character varying,
course_ count(am_course_name) character varying
)
AS $$
BEGIN
 RETURN QUERY select origindept, count(am_course_name) as number_total_course
from am_courseoffered
group by origindept;
END; $$ 

LANGUAGE 'plpgsql';

我的功能有一些错误。

错误:“字符”处或附近的语法错误第4行:course_ count(am_course_name)字符变化

我如何创建将返回此查询的函数。

postgresql stored-procedures
1个回答
0
投票

在我的脑海中,count函数应该返回bigint的数据类型,所以我认为将计数声明为varchar会导致数据类型不匹配。这样的事情应该解决这个问题:

CREATE OR REPLACE  FUNCTION getcourse () 
RETURNS TABLE (
  course_origindept character varying,
  course_count bigint -- change here
) AS $$
BEGIN
  RETURN QUERY
  select origindept, count(am_course_name) as number_total_course
  from am_courseoffered
  group by origindept;
END;
$$ 
LANGUAGE plpgsql;

我不得不问,虽然这是一个理解功能的学术练习吗?用例是值得怀疑的,因为视图更合适。

© www.soinside.com 2019 - 2024. All rights reserved.