4 つの関数を含むパッケージを作成しようとしています。各関数は一連の数値を加算し、合計から 1 を減算します。私は構文を正しくするのに多くの苦労をしてきました。以下の関数は単独で動作し、最後に最初の関数を呼び出してみます。
パッケージを作成しようとすると、7 行目で「次のいずれかを期待するときにシンボル "END" に遭遇しました: begin 関数プラグマ プロシージャ サブタイプ タイプ 現在のカーソル削除は 0.05 秒前に存在します」というエラーが表示されます。
パッケージ本体には、「名前は既存のオブジェクトによって既に使用されています」と書かれています。とにかくパッケージの仕様で宣言する必要があるため、わかりません.functionbyfourという名前のパッケージが既に存在するというエラーが発生した場合、作成または置換でこれを解決する必要があります.
そして最後に、パッケージ内の関数を使用しようとすると、「次のいずれかが期待されているときに記号 "BEGIN" が発生しました: := . ( @ % ; null 範囲のデフォルト文字ではなく、記号 ";" が置換されました。 "BEGIN" to continue. ORA-06550: 行 5、列 43: PLS-00103: シンボル "FROM" が次のいずれかを期待しているときに検出されました: . ( * % & = - + ; < / > at in は mod 剰余rem <> または != または ~= >= <= <> およびまたは like2 like4 likec between || multiset me".
私は ORACLE EXPRESS エディション 11g を使用しており、PL/SQL は初めてです (4 週間)。
どんな入力でも大歓迎です。
CREATE OR REPLACE FUNCTION functionbyfour AS
FUNCTION functone( first number, second number) RETURN NUMBER ;
FUNCTION functtwo( first number, second number, third number) RETURN NUMBER ;
FUNCTION functthree(first number, second number, third number, fourth number) RETURN NUMBER ;
FUNCTION functfour( first number, second number, third number, fourth number,fifth number) RETURN NUMBER ;
END functionbyfour;
/
CREATE OR REPLACE PACKAGE functionbyfour AS
FUNCTION functone (first number, second number ) RETURN number AS total number;
BEGIN
total:=first + second – 1;
RETURN total;
DBMS_OUTPUT.PUT_LINE(total);
END functone;
FUNCTION functtwo (first number, second number, third number ) RETURN number AS total number;
BEGIN
total:=first + second + third – 1;
RETURN total;
DBMS_OUTPUT.PUT_LINE(total);
END functtwo;
FUNCTION functthree (first number, second number,third number, fourth number ) RETURN number AS total number;
BEGIN
total:=first + second + third + fourth – 1;
RETURN total;
DBMS_OUTPUT.PUT_LINE(total);
END functthree;
FUNCTION functfour (first number, second number, third number, fourth number, fifth number ) RETURN number AS total number;
BEGIN
total:=first + second + third + fourth + fifth – 1;
RETURN total;
DBMS_OUTPUT.PUT_LINE(total);
END functfour;
/
BEGIN
SELECT functionbyfour.functone(1,2) FROM DUAL;
END;
/ </p>