无法在PostgreSQL函数中声明变量

h9vpoimq  于 5个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(76)

我正在用PostgreSQL写函数,但它不允许我在里面声明变量。下面是函数。

CREATE FUNCTION clean_emp() RETURNS void AS 
$func$
DECLARE cnt varchar;
      
$func$ LANGUAGE SQL;

字符串
错误消息

ERROR: syntax error at or near "varchar"
SQL state: 42601
Character: 66

fhg3lkii

fhg3lkii1#

这并不奇怪。SQL语言不支持变量。你必须使用plpgsql语言。

CREATE OR REPLACE FUNCTION clean_emp()
RETURNS void AS $$
DECLARE cnt varchar;
BEGIN
END;
$$ LANGUAGE plpgsql;

字符串
更多信息请参见文档http://www.postgresql.org/docs/current/static/plpgsql.html
PostgreSQL有更多的语言来编写函数。SQL语言非常适合一行单语句宏。PLpgSQL是经典的本地语言,类似于Oracle的PL/SQL和嵌入式SQL。

vql8enpb

vql8enpb2#

你可以在DECLARE clause中用:==声明局部变量,如下所示。* 我的答案详细解释了如何声明局部变量:

CREATE FUNCTION my_func() RETURNS INTEGER AS $$
DECLARE
  value1 INTEGER := 1; -- Here
  value2 INTEGER = 2; -- Here
  value3 INTEGER DEFAULT 3; -- Here
BEGIN
RETURN value1 + value2 + value3;
END;
$$ LANGUAGE plpgsql;

字符串

相关问题