尝试开发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是表的详细信息
答案 0 :(得分:2)
您可以通过从* _ERRORS视图之一读取它们来获取实际错误,例如USER_ERRORS用于登录用户模式中的对象,ALL_ERRORS用于与当前用户可以读取的对象相关的错误,或DBA_ERRORS用于与数据库中所有对象相关的错误。
您可以使用SELECT之类的内容来阅读它们,
SELECT *
FROM USER_ERRORS
WHERE NAME = 'TOTALCREDIT'
请记住,除非所有显式引用都使用Oracle,否则Oracle对所有模式对象都使用UPPER-CASE,因此查询这些视图时需要指定名称的UPPER-CASE版本。
就您的功能而言,在我看来问题出在读取的行上
total number(100) := 0;
Oracle仅支持不超过38位的精度。我建议您将其更改为
total number := 0;
看看它如何为您工作。
好运。