set serveroutput on;
declare
stuId char(9);
stuName Varchar2(8);
gotcoursegrade real;
totalcoursegrade real;
coursegradeproportion real;cursor GetCourseGrade(TeachingYearId char,ClassId char)
is
select tb_grade.stuid 学号,tb_student.stuname 姓名,sum(tb_grade.coursegrade) 应获学分,sum(tb_course.coursegrade) 总学分,ROUND(sum(tb_grade.coursegrade)/sum(tb_course.coursegrade)*100,2)||'%' 学分比例 from tb_grade,tb_course,tb_student
where tb_grade.courseid=tb_course.courseid and tb_student.stuid = tb_grade.stuid and tb_grade.teachingyearid= TeachingYearId
and tb_grade.classid = ClassId
group by tb_grade.stuid,stuname;begin
if GetCourseGrade%isopen = false then open GetCourseGrade('2007','S070801');
end if;
fetch GetCourseGrade into stuId,stuName,gotcoursegrade,totalcoursegrade,coursegradeproportion;
while StuInfo%found
loopfetch GetCourseGrade into stuId,stuName,gotcoursegrade,totalcoursegrade,coursegradeproportion;dbms_output.put_line('学号:'|| stuId ||',学生姓名:'|| stuName ||',已得学分:'|| gotcoursegrade||',应得学分:'|| totalcoursegrade||',学分比例:'||coursegradeproportion||' );end loop;
close GetCourseGrade;
end;
我想创建一个游标输出(学号,学生姓名,已得学分,应得学分,学分比例),但运行后出错:
ERROR: 
ORA-01756: 引号内的字符串没有正确结束 
请大家帮我看看!!谢谢!!!!!

解决方案 »

  1.   

    dbms_output.put_line('学号:'|| stuId ||',学生姓名:'|| stuName ||',已得学分:'|| gotcoursegrade||',应得学分:'|| totalcoursegrade||',学分比例:'||coursegradeproportion||' );改成
    dbms_output.put_line('学号:'|| stuId ||',学生姓名:'|| stuName ||',已得学分:'|| gotcoursegrade||',应得学分:'|| totalcoursegrade||',学分比例:'||coursegradeproportion );
      

  2.   

    dbms_output.put_line('学号:'|| stuId ||',学生姓名:'|| stuName ||',已得学分:'|| gotcoursegrade||',应得学分:'|| totalcoursegrade||',学分比例:'||coursegradeproportion||' );多了一个'dbms_output.put_line('学号:'|| stuId ||',学生姓名:'|| stuName ||',已得学分:'|| gotcoursegrade||',应得学分:'|| totalcoursegrade||',学分比例:'||coursegradeproportion );
      

  3.   

    修改过后又出现了以下的错误,请大家再帮我看看!!谢谢!!!!
    and tb_grade.classid = ClassId
            *第 12 行出现错误: 
    ORA-06550: 第 12 行, 第 24 列: 
    PL/SQL: ORA-00918: 未明确定义列 
    ORA-06550: 第 10 行, 第 1 列: 
    PL/SQL: SQL Statement ignored 
      

  4.   

    cursor GetCourseGrade(TeachingYearId char,ClassId char)
    and tb_grade.classid = ClassId
    这个游标参数最好不要跟列名同名,
    游标参数名称改为p_classid还有teachingyearid的命名