收到与功能相关的以下错误:
'第20行的错误:PLS-00103:遇到以下其中一项时遇到符号“end-of-file”:end not pragma final instantiable order overriding static member constructor map 0.01 seconds
CREATE OR REPLACE FUNCTION Function1
RETURN FLOAT
IS
PricePerBug FLOAT,
NumberOfBugs NUMBER,
TotalIncome FLOAT;
BEGIN
SELECT SUM(ProjectValue) INTO TotalIncome FROM tblProject;
SELECT COUNT(idBug) INTO NumberOfBugs FROM tblBug;
PricePerBug := (NumberOfBugs)/(TotalIncome);
RETURN PricePerBug;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No data found, no result to display; exception handled...');
WHEN TOO_MANY_ROWS THEN
RETURN 'Too many rows returned...';
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20015, 'Unknown exception in function Function1.');
END Function1;
/
任何赞赏的建议......
答案 0 :(得分:7)
声明应该以分号而不是逗号结尾:
PricePerBug FLOAT;
NumberOfBugs NUMBER;
TotalIncome FLOAT;
与此错误无关的其他问题涉及异常处理:
如果有人提出NO_DATA_FOUND (它不会)你会得到的 错误“ORA-06503:PL / SQL:功能 没有价值地返回“因为你 处理异常但不处理 返回一个值。
如果TOO_MANY_ROWS被引发(它不会),你会收到一个错误,因为你不能从只返回FLOAT类型值的函数返回文件'返回太多行......' !
此特定函数的正确错误处理量为none,即:
CREATE OR REPLACE FUNCTION Function1
RETURN FLOAT
IS
PricePerBug FLOAT;
NumberOfBugs NUMBER;
TotalIncome FLOAT;
BEGIN
SELECT SUM(ProjectValue) INTO TotalIncome FROM tblProject;
SELECT COUNT(idBug) INTO NumberOfBugs FROM tblBug;
PricePerBug := (NumberOfBugs)/(TotalIncome);
RETURN PricePerBug;
END Function1;