如何在Oracle SQL PLUS中声明常量?
在Oracle SQL PLUS中声明常量的方法
SQL PLUS本身没有专门的“常量”声明语法,但可以通过两种方式实现常量的效果:
方法一:基于DEFINE命令实现(会话级常量)
你已经熟悉用DEFINE声明变量,同样可以用它定义常量,通常通过命名规则(比如C_前缀、全大写)区分,还能通过参数锁定值避免被修改:
-- 基础常量定义 DEFINE C_MAX_RECORDS = 100 DEFINE C_DEFAULT_SCHEMA = 'HR' -- 锁定常量,禁止后续修改 DEFINE C_TARGET_TABLE = 'BUSINESS_UNIT_T' NOVERRIDE
添加NOVERRIDE后,若尝试重新赋值该常量,SQL PLUS会直接报错,以此保证其不可修改性。
方法二:在PL/SQL块中声明真正的常量
如果是在PL/SQL代码里使用,可通过CONSTANT关键字声明编译级常量,运行时完全无法修改:
DECLARE C_TARGET_TABLE CONSTANT VARCHAR2(30) := 'BUSINESS_UNIT_T'; C_MAX_SALARY CONSTANT NUMBER := 100000; BEGIN DBMS_OUTPUT.PUT_LINE('目标表名称:' || C_TARGET_TABLE); END; /
补充说明
DEFINE定义的常量是会话级的,在整个SQL PLUS会话中有效;PL/SQL常量仅在当前块或子程序范围内有效。- 执行无参数的
DEFINE命令,可查看当前会话所有已定义的常量和变量。
内容的提问来源于stack exchange,提问作者radha
相关产品推荐
相关产品推荐

