Я пытаюсь создать пакет с четырьмя функциями. Каждая функция добавляет набор чисел и вычитает один из общего числа. У меня возникли проблемы с правилом синтаксиса. Функции ниже работают сами по себе, и я пытаюсь вызвать первую функцию в конце.Функция/выпуск пакета PL/SQL
Когда я пытаюсь создать пакет я получаю сообщение об ошибке, где в строке 7, «Столкнутый символ„END“, когда ожидает один из следующих действий: начать функцию процедура Прагмы типа подтипа текущего курсор удаление существует до 0.05 секунды»
В корпусе упаковки указано, что «имя уже используется существующим объектом». Я не понимаю, как это должно быть объявлено в спецификации пакета в любом случае, и создание или замена должно решить это, если ошибка в том, что уже есть пакет с именем functionbyfour.
И, наконец, когда я пытаюсь использовать функцию в пакете, он говорит: «Обнаружен символ« BEGIN », если вы ожидаете одно из следующего:: =. (@%; Не нулевой диапазон по умолчанию символ Символ«; «заменяли« BEGIN »на продолжение. ORA-06550: строка 5, столбец 43: PLS-00103: встретил символ« ОТ », если ожидал одно из следующего:. (*% & = - +; < /> at в это мода остаток не РЗМ <> или! = или ~ => = < < => и или как Нравится2 like4 likec между || мультимножества меня».
Я использую ORACLE Express Edition 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;
/
спасибо за ввод, не уверен, что во втором ключевое слово (его не подсвечивают и, похоже, работают). Это задание, кто знает, что проходит через ум профессора? Ваш код кажется легким, но он сказал, что хочет пакет с четырьмя функциями, поэтому я не буду спорить с ним. –
Да, когда я сказал «не могу», я должен был сказать «не должен», если вы включили предупреждения plsql и проверили ошибки пользователя, вы получите предупреждение PLW-06010: ключевое слово «SECOND» используется как определенное имя – Dave