无法在包中创建全局变量



我尝试这样做:

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

如何创建一个包含全局变量的包,以便我可以像下面这样使用它:

my_package.my_variable

如果你想在SQL中使用它,那么创建一个函数来包装变量:

CREATE OR REPLACE PACKAGE my_package AS
FUNCTION get_my_variable
RETURN VARCHAR2;
END my_package;
/
CREATE OR REPLACE PACKAGE BODY my_package AS
-- Declare the package variable
-- It can be public, if declared in the package specification
-- Or private, if declared in the package body
my_variable VARCHAR(255);
FUNCTION get_my_variable
RETURN VARCHAR2
IS
BEGIN
RETURN my_variable;
END;
BEGIN
-- Assign a value to the global variable
my_variable := 'test';
END my_package;
/

可以在SQL中使用:

SELECT my_package.get_my_variable() FROM DUAL;

输出:

MY_PACKAGE.GET_MY_VARIABLE()

您缺少一个BEGIN块:

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

最新更新