0

我是新手,postgresql起初我想在postgresql. 我复制并粘贴了一个示例,pgsql但发生了错误。这是我的代码:

CREATE FUNCTION somefunc() RETURNS integer AS $$
<< outerblock >>
DECLARE
    quantity integer := 30;
BEGIN
    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 30
    quantity := 50;
    --
    -- Create a subblock
    --
    DECLARE
        quantity integer := 80;
    BEGIN
        RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 80
        RAISE NOTICE 'Outer quantity here is %', outerblock.quantity;  -- Prints 50
    END;

    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 50

    RETURN quantity;
END;
$$ LANGUAGE plpgsql;

和我的错误:

An error has occured
Fehler:Syntaxfehler bei "CREATE"
Line2:$Body$CREATE FUNCTION somefunc () RETURNS integer AS $$

编辑: 我已经在代码部分编写了上面的代码,但是 psql 在 SQL 部分中已经生成了相同的代码,并带有附加行:

$BODY$CREATE FUNCTION somefunc() RETURNS integer AS $$

如果我删除此行,则此行 在此处输入图像描述 中发生错误,此错误发生在下一行: 在此处输入图像描述

4

1 回答 1

0

我的猜测是您正在使用 GUI 来生成函数。如果是这种情况,那么 GUI 可能具有您填写(或忽略)的函数名称和参数等字段。因此,您现在输入代码的位置将是函数的主体区域,GUI 已经提示您输入所有样板信息。如果所有这些都是这种情况,那么您应该只在该字段中包含函数主体代码,而不是完整的函数创建代码(因为应用程序将根据您输入到 GUI 的内容为您生成该代码)。

或者,如果应用程序允许您执行任意 SQL(确实如此),您可以将 CREATE 作为任意 SQL 执行,而不是使用 GUI。

于 2013-01-07T16:15:33.583 回答