PL/SQL 可接受的标识符、变量和命名约定

⚡ 智能摘要

PL/SQL 标识符是赋予 PL/SQL 对象(例如变量、常量、游标和过程)的名称。它们必须以字母开头,长度不超过 30 个字符,不区分大小写,并遵循指示变量级别和类型的命名约定。

  • 🏷️ 定义: 标识符用于命名任何 PL/SQL 对象,从变量到包或标签。
  • 📏 规则: 必须以字母开头,最多 30 个字符,且不包含空格。
  • 🔠 允许使用的标志: 标识符中允许使用美元符号、下划线和井号。
  • 🧭 命名约定: 第一个字母表示级别(P、L、G),第二个字母表示类型(C、V、N、R、T)。
  • 📦 变量: 变量是绑定到存储区域的标识符,需要用有效的数据类型声明。
  • 📝 宣言: 变量在使用前需要在声明部分进行声明。
  • ➡️ 任务: 可以在声明时设置值,也可以稍后使用 := 运算符设置值。

PL/SQL 标识符命名约定

什么是 PL/SQL 标识符?

标识符 在 PL/SQL 中,标识符是赋予 PL/SQL 对象的名称。对象可以是常量、变量、异常、游标、过程、函数、包、触发器、对象类型、保留字或标签。标识符包含字母、数字、符号、下划线等。它们不区分大小写,且长度限制为 30 个字符。

PL/SQL 标识符的属性

以下是 PL/SQL 标识符的主要属性:

  • 必须以字母开头。
  • 最大字数限制为 30 个字符。
  • 不能包含空格字符。
  • 可以包含美元符号('$')、下划线('_')和井号('#')。
  • 不区分大小写。

PL/SQL 中的命名约定

在一个复杂的程序中,我们可能需要包含许多标识符,例如变量和游标。为了避免混淆并提高代码的可读性,我们需要遵循一定的命名约定。

PL/SQL 中常用的命名约定如下。

第一个字母指定变量的声明级别:

  • 'P'——在参数级别声明的变量。
  • 'L' – 在局部代码块中声明的变量。
  • 'G' – 在全局级别声明的变量。

第二个字母指定标识符的类型:

  • 'C' – 光标标识符。
  • 'V' – VARCHAR 和 CHAR 数据类型。
  • 'N' – NUMBER 数据类型。
  • 'R' – 记录类型.
  • 'T' – 表格类型。

以下是一些 PL/SQL 中正确的命名约定示例:

  • Lv_name – VARCHAR/CHAR 数据类型的局部变量。
  • Pc_num – 参数级光标标识符。
  • Gn_user_id – 全局级别变量 数值数据类型.

PL/SQL 变量

变量 在 PL/SQL 中,变量是分配给程序可操作存储区域的基本标识符。变量是用户可以存储值的占位符。这些变量在使用前需要与有效的 PL/SQL 数据类型关联。数据类型定义了这些变量的存储和处理方法。

PL/SQL 变量声明

变量主要用于在数据操作或处理过程中存储数据。它们必须在使用前在声明部分中声明。 PL/SQL 块.

声明变量是将名称分配给占位符并将其与有效数据类型关联起来的过程。

句法

<variable_name> <datatype>;

上面的语法展示了如何在声明部分声明变量。

PL/SQL 变量中的数据存储

变量一旦声明,即可存储指定类型的数据。变量值可以在执行阶段赋值,也可以在声明时赋值。变量值可以是字面值,也可以是其他变量的值。赋值后,该值会存储在为该变量分配的内存空间中。

句法

<variable_name> <datatype> := <default_value>;

上面的语法展示了如何在声明部分声明变量并为其赋值。

<variable_name> <datatype>;
<variable_name> := <value>;

上面的语法展示了如何给一个已经声明的变量赋值。

例如1: 在这个例子中,我们将学习如何声明变量并为其赋值。在下面的程序中,我们将使用变量打印“GURU99”。

PL/SQL 变量声明和赋值示例

DECLARE
lv_name VARCHAR2(50);
lv_name_2 VARCHAR2(50) := 'GURU99';
BEGIN
lv_name := lv_name_2;
dbms_output.put_line(lv_name);
END;
/

Code 说明

  • Code 第2行: 声明变量'lv_name',类型为VARCHAR2,大小为50。
  • Code 第3行: 声明变量'lv_name_2',类型为VARCHAR2,大小为50,默认值为'GURU99'。
  • Code 第5行: 变量“lv_name”的值由变量“lv_name_2”赋值。
  • Code 第6行: 打印变量“lv_name”的存储值。

执行上述代码后,将得到以下输出。

输出

古鲁99号

常见问题

标识符必须以字母开头,长度不超过 30 个字符,不包含空格,且只能使用字母、数字以及美元符号、下划线和井号。标识符不区分大小写。

前缀可以一目了然地编码作用域和类型,因此 Lv_name 可以被视为局部 varchar 变量。在大型代码块中,这可以减少混淆,并使代码更易于维护。

:= 运算符用于给变量赋值。单个 = 用于条件语句中的比较。混用这两个运算符是初学者常犯的错误,会导致编译时失败。

是的。人工智能可以扫描软件包,标记出违反约定前缀的标识符,并提出重命名建议。它还可以根据变量的作用域和类型,为新变量生成一致的名称。

不,lv_name 和 LV_NAME 指的是同一个标识符。只有用单引号括起来的字符串字面量才区分大小写,所以这种约定是为了提高可读性而存在的,并非编译器的要求。

总结一下这篇文章: