我目前有2个功能和2个运行正常的程序。为了实现程序应该执行的操作,我执行过程1然后执行过程2,过程2将在执行时引用函数。我现在需要将所有内容组合到一个包中,并运行一个入口模块。每个过程/函数都有自己的变量,所以我不知道在哪里声明所有内容(无论是在intro还是body中)。
为了解释的目的,我已经包含了我迄今为止尝试过的内容(但是没有用)。任何帮助,将不胜感激。
CREATE OR REPLACE package myPackage AS
FUNCTION calculateHoliday (p_day in date);
FUNCTION calculateAvg (p_dayname in varchar2, p_timeinterval in number);
PROCEDURE loopHalfHourValues;
PROCEDURE generateForecast;
END myPackage;
PACKAGE BODY entryModule AS
...paste entirety of procedures and functions...
END entryModule;
答案 0 :(得分:1)
CREATE OR REPLACE PACKAGE "myPackage" AS
FUNCTION calculateHoliday (p_day in date);
FUNCTION calculateAvg (p_dayname in varchar2, p_timeinterval in number);
PROCEDURE loopHalfHourValues;
PROCEDURE generateForecast;
PROCEDURE main;
END myPackage;
CREATE OR REPLACE PACKAGE BODY "myPackage" AS
-- declare global variables
FUNCTION calculateHoliday (p_day in date)
....
end calculateHoliday;
FUNCTION calculateAvg (p_dayname in varchar2, p_timeinterval in number)
....
end calculateAvg;
PROCEDURE loopHalfHourValues is
...
end loopHalfHourValues;
PROCEDURE generateForecast is
...
end generateForecast;
PROCEDURE main is
... -- entry point call the procedures/functionns
end main ;
END myPackage;
答案 1 :(得分:1)
功能必须返回一些内容!
/* package specification */
CREATE OR REPLACE PACKAGE myPackage AS
/* public variables here */
g_variable_no NUMBER;
g_variable_ch VARCHAR2(4000);
/* public procedures and functions here */
FUNCTION calculateHoliday(p_day IN DATE) RETURN return_type;
FUNCTION calculateAvg(p_dayname IN VARCHAR2, p_timeinterval IN NUMBER) RETURN return_type;
PROCEDURE loopHalfHourValues;
PROCEDURE generateForecast;
END myPackage;
/* package specification */
CREATE OR REPLACE PACKAGE BODY entryModule AS
/* private variables here */
l_variable_no NUMBER;
l_variable_ch VARCHAR2(4000);
FUNCTION calculateHoliday(p_day IN DATE) RETURN return_type
AS
l_return return_type;
BEGIN
RETURN return_type;
END;
FUNCTION calculateAvg(p_dayname IN VARCHAR2, p_timeinterval IN NUMBER) RETURN return_type
AS
l_return return_type;
BEGIN
RETURN return_type;
END;
PROCEDURE loopHalfHourValues
AS
BEGIN
NULL;
END;
PROCEDURE generateForecast
AS
BEGIN
NULL;
END;
END entryModule;
答案 2 :(得分:0)
您的包规格和正文是不同的标识符,使用相同的包规范和正文标识符
创建或替换包myPackage AS --- spec
创建或替换包Body MyPackage AS --- body
使entrymodule成为一个单独的包来调用或单独的程序,在这种情况下我不认为它是必需的。