繁体   English   中英

POSTGRESQL PGADMIN4 中的存储过程错误

[英]Stored Procedure error in POSTGRESQL PGADMIN4

当我尝试在 PGADMIN4 中创建存储过程或存储函数时出现以下错误。 我该如何解决:

错误:“程序”处或附近的语法错误

第 1 行:创建或替换过程转移(

创建表的代码:

drop table if exists accounts;
create table accounts (
    id int generated by default as identity,
    name varchar(100) not null,
    balance dec(15,2) not null,
    primary key(id)
);
insert into accounts(name,balance) values('Bob',10000);
insert into accounts(name,balance) values('Alice',10000);

添加以下存储过程后收到错误:

create or replace procedure transfer(
   sender int,
   receiver int, 
   amount dec
)
language plpgsql    
as $$
begin
    -- subtracting the amount from the sender's account 
    update accounts 
    set balance = balance - amount 
    where id = sender;

    -- adding the amount to the receiver's account
    update accounts 
    set balance = balance + amount 
    where id = receiver;

    commit;
end;$$

过程仅在 Postgres 版本 11 开始可用,而您使用版本 9.4 标记您的问题。

在早期版本中,您可以改用 void 函数。 基本上,替换:

create or replace procedure transfer(sender int, receiver int, amount dec)
language plpgsql    
as $$
begin
    ...
end; $$

和:

create or replace function transfer(sender int, receiver int, amount dec)
returns void
language plpgsql    
as $$
begin
    ...
end; $$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM