我尝试这样做:
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;
/