You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle PL/SQL包中创建全局变量失败,求正确实现方法

如何正确创建包含全局变量的PL/SQL包

尝试执行以下PL/SQL代码创建带全局变量的包:

CREATE OR REPLACE PACKAGE my_package AS
  -- Declare the global variable
  my_variable VARCHAR(255);
END my_package;
/

CREATE OR REPLACE PACKAGE BODY my_package AS
  -- Assign a value to the global variable
  my_variable := 'test';
END my_package;
/

但代码中的:=触发错误,抛出异常:

LINE/COL  ERROR
--------- -------------------------------------------------------------
3/15      PLS-00103: Encountered the symbol "=" when expecting one of the following:     constant exception <an identifier>    <a double-quoted delimited-identifier> table columns long    double ref char time timestamp interval date binary national    character nchar The symbol "<an identifier>" was substituted for "=" to continue. 
Errors: check compiler log

错误原因

包体的声明区域仅支持元素声明操作,不能直接执行赋值语句。要为全局变量完成初始化赋值,必须将赋值逻辑放在包体的初始化执行块(BEGIN ... END;结构)中。

正确代码示例

CREATE OR REPLACE PACKAGE my_package AS
  -- 声明全局变量
  my_variable VARCHAR(255);
END my_package;
/

CREATE OR REPLACE PACKAGE BODY my_package AS
BEGIN
  -- 在初始化块中为全局变量赋值
  my_variable := 'test';
END my_package;
/

调用方式

现在可以通过my_package.my_variable直接访问该全局变量,例如在PL/SQL块中输出变量值:

BEGIN
  DBMS_OUTPUT.PUT_LINE(my_package.my_variable);
END;
/

内容的提问来源于stack exchange,提问作者TourEiffel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:21:02