0

現在、正常に動作する 2 つの関数と 2 つのプロシージャがあります。プログラムの目的を達成するために、プロシージャ 1 を実行し、次にプロシージャ 2 を実行します。プロシージャ 2 は、実行時に関数を参照します。次に、実行するエントリ モジュールを使用して、すべてを 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;

END myPackage;


PACKAGE BODY entryModule AS

  ...paste entirety of procedures and functions...

END entryModule;
4

3 に答える 3

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;
于 2013-06-07T08:50:40.380 に答える
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;
于 2013-06-07T07:04:12.927 に答える
0

あなたのパッケージの仕様と本体は異なる識別子です パッケージの仕様と本体に同じ識別子を使用します

パッケージ myPackage AS を作成または置換 --- 仕様

パッケージの作成または置換 Body myPackage AS --- body

entrymodule を呼び出す別のパッケージまたは別のプロシージャにします。この場合、それは必要ないと思います。

于 2013-06-07T06:54:04.427 に答える