我正在尝试在PL / pgSQL中编写一个函数,它将计算学校名称为“CAA”的表simulated_records
中的行数。我想将此数字保存在名为count
的变量中,然后将其返回。但是,我一直在'SELECT'上或附近收到错误。
这是我的代码:
CREATE OR REPLACE FUNCTION grades()returns integer AS $$
DECLARE
count integer; --counts total number per school
BEGIN
count := SELECT count(school) FROM simulated_records WHERE school ='CAA';
return count;
END;
$$
LANGUAGE plpgsql;
答案 0 :(得分:0)
使用SELECT INTO
或将子选项括在括号中:
CREATE OR REPLACE FUNCTION grades()
RETURNS integer AS
$func$
DECLARE
count integer; --counts total number per school
BEGIN
count := (SELECT count(school)::int FROM simulated_records WHERE school ='CAA');
return count;
END
$func$ LANGUAGE plpgsql;
另请注意,count()
会返回bigint
,这会导致类型不匹配,所以我添加了一个演员。
但这个例子非常嘈杂。只需直接使用查询,或使用更简单的sql函数:
CREATE OR REPLACE FUNCTION grades()
RETURNS integer AS
$func$
SELECT count(school)::int FROM simulated_records WHERE school ='CAA';
$func$ LANGUAGE sql;
如果定义school
NOT NULL
,则使用count(*)
。