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 常量。