PL/pgSQL 常量
在本教程中,您将了解值不能更改的 PL/pgSQL 常量。
摘要:在本教程中,您将了解值不能更改的 PL/pgSQL 常量。
PL/pgSQL 常量介绍
与变量不同,常量的值一旦初始化就不能更改。
以下是使用常量的原因。
首先,常量使代码更具可读性和可维护性,例如,假设您有以下公式:
selling_price := net_price + net_price * 0.1;
是什么 0.1 意思?它可以被解释为任何东西。
但是当你使用下面的公式时,每个人都知道计算售价等于净价加增值税(VAT)的含义。
selling_price := net_price + net_price * vat;
其次,常量减少了维护工作。
假设您有一个公式可以计算函数中所有位置的售价。当增值税发生变化时,例如从 0.1 变为 0.5,您需要更改所有这些硬编码值。
通过使用常量,您只需在定义常量的地方更改其值。
那么如何在 PL/pgSQL 中定义一个常量呢?
定义常量
要在 PL/pgSQL 中定义常量,请使用以下语法:
constant_name constant data_type := expression;
在这个语法中:
- 首先,指定常量的名称。该名称应尽可能具有描述性。
- 其次,
constant在名称后添加关键字并指定常量的数据类型。 - 第三,为赋值运算符 (
:=)之后的常量初始化一个值。
PL/pgSQL 常量示例
以下示例声明了一个名为 vat 的常量 ,用于存储增值税并根据净价计算售价:
do $$ declare
vat constant numeric := 0.1;
net_price numeric := 20.5;
begin
raise notice 'The selling price is %', net_price * ( 1 + vat );
end $$;
NOTICE: The selling price is 22.55
现在,如果您尝试按如下方式更改常量的值:
do $$ declare
vat constant numeric := 0.1;
net_price numeric := 20.5;
begin
raise notice 'The selling price is %', net_price * ( 1 + vat);
vat := 0.05;
end $$;
您将收到以下错误消息:
ERROR: "vat" is declared CONSTANT
SQL state: 22005
Character: 155
与变量的默认值类似,PostgreSQL 在运行时而不是编译时输入块时评估常量的值。例如:
do $$ declare
start_at constant time := now();
begin
raise notice Start executing block at %', start_at;
end $$;
NOTICE: Start executing block at 17:49:59.791
now() now()` 每次调用块时,PostgreSQL 都会评估该函数。要查看其效果,您可以重复执行该块:
NOTICE: Start executing block at 17:50:44.956
在本教程中,您学习了如何声明和使用 PL/pgSQL 常量。