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
相关产品推荐
相关产品推荐

