如何解决警告:函数创建时出现编译错误

时间:2019-04-21 19:17:08

标签: oracle plsql

尝试开发PL / SQL函数以打印特定学生注册的总学分并从用户读取学生ID。

这是代码

 CREATE OR REPLACE FUNCTION totalcredit (stuid IN NUMBER)  RETURN number
IS
total number(100) := 0;
BEGIN
SELECT sum(b.credit) INTO total FROM student a INNER JOIN student_course c ON a.studid = c.studid INNER JOIN course b ON c.courseid = b.courseid WHERE a.studid = stuid;
RETURN total;
END;
/

this是表的详细信息

1 个答案:

答案 0 :(得分:2)

您可以通过从* _ERRORS视图之一读取它们来获取实际错误,例如USER_ERRORS用于登录用户模式中的对象,ALL_ERRORS用于与当前用户可以读取的对象相关的错误,或DBA_ERRORS用于与数据库中所有对象相关的错误。

您可以使用SELECT之类的内容来阅读它们,

SELECT *
  FROM USER_ERRORS
  WHERE NAME = 'TOTALCREDIT'

请记住,除非所有显式引用都使用Oracle,否则Oracle对所有模式对象都使用UPPER-CASE,因此查询这些视图时需要指定名称的UPPER-CASE版本。

Documentation here


就您的功能而言,在我看来问题出在读取的行上

total  number(100) := 0;

Oracle仅支持不超过38位的精度。我建议您将其更改为

total  number := 0;

看看它如何为您工作。

好运。