我们假设存在一个表terms(id,year,sess)
。 sess
是学期S1
或S2
。
create function Q3(id1 IN integer) returns TextString
declare tm TextString
begin
SELECT 'year%100'||lower(sess) into tm
FROM Terms
WHERE id1 = id
return tm
END;
我在declare
附近收到错误,我的代码出了什么问题?
答案 0 :(得分:1)
这几乎都是错的。 PostgreSQL存储过程是以字符串形式编写的 - 您错过了它,并且您错过了语言规范。可能你想要:
CREATE OR REPLACE FUNCTION Q3(_id integer)
RETURNS text AS $$
DECLARE _tm text;
BEGIN
SELECT t.year % 100 || lower(t.sess) INTO _tm
FROM terms t
WHERE _id = t.id;
RETURN _tm;
END;
$$ LANGUAGE plpgsql;
此代码可以被截断一点,或者您可以将SQL语言用于简单的一行函数:
CREATE OR REPLACE FUNCTION Q3(id integer)
RETURNS text AS $$
SELECT t.year % 100 || lower(t.sess)
FROM terms t
WHERE t.id = $1;
$$ LANGUAGE sql;