簡體   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