域名 AXUM.RS 将于 2025 年 10 月到期。我们无意再对其进行续费,如果你有意接续这个域名,请与我们取得联系。
  • AXUM.RS 现仅需人民币 3000 元(大写:叁仟元整。接受适度议价
  • 按照行业规则,AXUM.RS 到期后,大概率会进入长时间的赎回期,该期间内,如果你想拥有该域名,将要付出高额的费用
  • 我们已启用 AXUM.EU.ORG 域名,并将持续运营
  • 仅接受微信或支付宝交易
如果你对 AXUM.RS 有兴趣,请和我们进行联系:

存储过程

本章我们将讨论存储过程。

使用 CREATE PROCEDURE 语句创建存储过程,语法如下:

create [or replace] procedure procedure_name(parameter_list)
language plpgsql
as $$
declare
-- 声明变量
begin
-- 存储过程主体
end $$;
  • 存储过程的参数模式只能是 ININOUT,而不能是OUT
  • 存储过程不能返回值
    • 即不能使用 RETURN 表达式;
    • 但可以使用不带表达式的 RETURN; 来停止存储过程
    • 如要从存储过程中返回值,可以使用 INOUT 模式的参数
  • 即不能使用 RETURN 表达式;
  • 但可以使用不带表达式的 RETURN; 来停止存储过程
  • 如要从存储过程中返回值,可以使用 INOUT 模式的参数

示例数据:

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);

调用存储过程:

call transfer(1,2,1000);

删除存储过程

drop procedure [if exists] procedure_name [(argument_list)]
[cascade | restrict]

删除存储过程与删除函数非常相似,包括如果发生重载,需要通过参数列表来显式指定要删除的重载版本。

要查看完整内容,请先登录