在pl / pgsql中编写一个函数

时间:2017-12-20 11:40:32

标签: postgresql stored-procedures

这是我的查询。

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)字符变化

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

1 个答案:

答案 0 :(得分: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;

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