我正在尝试运行DO块,例如这个(从本论坛的帖子中复制)
DO $$
DECLARE x int;
BEGIN
x := 10;
RAISE NOTICE '>>>%<<<', x;
END;
$$
但会发生什么:
错误:“DO”处或附近的语法错误
SQL状态:42601
字符:1
没关系,我操作的DO块,DO语句根本不起作用(包括从doucment复制/粘贴的例子,我想知道可能是什么原因。请问有人可以帮助我吗? / p>
非常感谢
答案 0 :(得分:5)
你正在使用旧版本的PostgreSQL。
一般情况下,如果您在关键字上遇到意外的语法错误,或者PostgreSQL抱怨显然存在缺少的功能,首先要检查您尝试使用的功能是否确实存在于您的版本中。
您可以将DO
块替换为:
CREATE OR REPLACE FUNCTION some_func() RETURNS void AS
$$
.. body of the DO block here...
$$ LANGUAGE plpgsql VOLATILE;
SELECT some_func();
DROP FUNCTION some_func();
旧版本。
答案 1 :(得分:1)
如果你对postgreSQL 9.0+有同样的错误,那么是由于错误的执行类型。 pgAdiminIII有两个执行(绿色三角形)按钮:
要运行DO $$
,您需要第一个。