如何通过create function修改表的列

时间:2014-04-20 18:25:19

标签: sql postgresql function plpgsql

我们假设存在一个表terms(id,year,sess)sess是学期S1S2

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附近收到错误,我的代码出了什么问题?

1 个答案:

答案 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;

请参阅http://postgres.cz/wiki/PL/pgSQL_%28en%29