Postgresql PostSQL中的Imorting过程

Postgresql PostSQL中的Imorting过程,postgresql,Postgresql,目标是在PostgreSQL中导入和使用过程(通过pgAdmin和Shell)。我的实验以错误告终 代码示例(来自教程): 在函数生成器(我猜是pgAdmin)中,您已将语言设置为SQL,但在实际函数定义中,您有plpgsql,这是正确的选择。您只需要在pgAdmin中更改函数的编写语言,或者简单地将其粘贴到查询窗口并执行(工作正常) 编辑:实际上,您可能在code部分中放了太多的内容,因为pgAdmin可能会为您填充很多内容。如果您转到SQL选项卡,您将看到pgAdmin正在尝试执行的实际查询

目标是在PostgreSQL中导入和使用过程(通过pgAdmin和Shell)。我的实验以错误告终

代码示例(来自教程):

在函数生成器(我猜是pgAdmin)中,您已将语言设置为
SQL
,但在实际函数定义中,您有
plpgsql
,这是正确的选择。您只需要在pgAdmin中更改函数的编写语言,或者简单地将其粘贴到查询窗口并执行(工作正常)


编辑:实际上,您可能在
code
部分中放了太多的内容,因为pgAdmin可能会为您填充很多内容。如果您转到
SQL
选项卡,您将看到pgAdmin正在尝试执行的实际查询,我确信这没有什么好处。我的建议是在SQL编辑器中以纯SQL方式执行
code

请将错误文本发布到问题中,而不是图像中。这使我们可以更容易地帮助您,并为搜索时的错误消息编制索引。
CREATE OR REPLACE FUNCTION add_event(
                                      title text, 
                                      starts TIMESTAMP,
                                      ends TIMESTAMP, 
                                      venue text, 
                                      postal VARCHAR(9), 
                                      country CHAR(2) 
                                      )
RETURNS BOOLEAN 
AS $$
DECLARE
    did_insert BOOLEAN := FALSE;
    found_count INTEGER;
    the_venue_id INTEGER;

BEGIN
    SELECT venue_id INTO the_venue_id
    FROM venues v
    WHERE v.postal_code=postal 
                  AND v.country_code=country 
                  AND v.name LIKE venue
    LIMIT 1;

    IF the_venue_id IS NULL THEN
        INSERT INTO venues (name, postal_code, country_code)
        VALUES (venue, postal, country)

        RETURNING venue_id INTO the_venue_id;
        did_insert := TRUE;
    END IF;

RAISE NOTICE ‘Venue found %’, the_venue_id;

INSERT INTO events (title, starts, ends, venue_id)
VALUES (title, starts, ends, the_venue_id);

RETURN did_insert;

END;
$$ LANGUAGE plpgsql;