我正在尝试创建一个具有四个功能的包。每个函数将添加一组数字并从总数中减去一个。我在语法正确时遇到了很多麻烦。下面的函数独立工作,我尝试在最后调用第一个函数。
当我尝试创建包时,在第 7 行出现错误,“在预期以下情况之一时遇到符号“END”:开始函数 pragma 过程子类型类型当前光标删除在 0.05 秒之前存在”
在包正文中它说“名称已被现有对象使用”。我不明白,因为无论如何它都必须在包的规范中声明,如果错误是已经有一个名为 functionbyfour 的包,那么 create 或 replace 应该可以解决这个问题。
最后,当我尝试使用包中的函数时,它显示“遇到以下符号之一时遇到符号“BEGIN”::=。(@%;不是空范围默认字符符号“;”被替换为“BEGIN”继续。ORA-06550:第 5 行,第 43 列:PLS-00103:在预期以下之一时遇到符号“FROM”:. ( * % & = - + ; < /> 在 in 是 mod 余数not rem <> or != or ~= >= <= <> and or 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>