oracle 警告创建的过程带有编译错误
存储过程如下求告诉错误!!createorreplaceprocedure全班排名(classinchar(8))asbeginselectb.学号,a.姓名,avg(a...
存储过程 如下 求 告诉错误 !!
create or replace procedure 全班排名(
class in char(8)
)
as
begin
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号);
join 班级信息表 c on (c.班级号=b.班级号);
where c.班级名称=class;
group by b.学号;
order by avg(成绩) ,b.学号 desc;end; 展开
create or replace procedure 全班排名(
class in char(8)
)
as
begin
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号);
join 班级信息表 c on (c.班级号=b.班级号);
where c.班级名称=class;
group by b.学号;
order by avg(成绩) ,b.学号 desc;end; 展开
展开全部
1. 创建完存储过程(在命令行),可以用showerr看具体错误
2. 可以在PLSQL中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
4. 存储过程不能直接用SQL,要用游标或select……into方式
比如:
create or replace procedure 全班排名(
class in char(8)
)
as
cursor cur(p_class char(8)) is
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
rs cur%rowtype;
begin
for rs in cur(class) loop
dbms_output.put_line(rs.学号||','||rs.姓名||','||rs.平均分||','||rs.总分);
end loop;
end;
2. 可以在PLSQL中,输入"全班排名", 然后俺右键->编辑,看到具体错误
3. 你的sql从from后一直到group by的分号;是多余的,即便单独在SQL窗口也会报错
SQL应该改成
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
4. 存储过程不能直接用SQL,要用游标或select……into方式
比如:
create or replace procedure 全班排名(
class in char(8)
)
as
cursor cur(p_class char(8)) is
select b.学号,a.姓名, avg(a.成绩) 平均分,sum(a.成绩) 总分
from 成绩信息表 a
join 学籍信息表 b on (a.学号=b.学号)
join 班级信息表 c on (c.班级号=b.班级号)
where c.班级名称=class
group by b.学号
order by avg(成绩) ,b.学号 desc;
rs cur%rowtype;
begin
for rs in cur(class) loop
dbms_output.put_line(rs.学号||','||rs.姓名||','||rs.平均分||','||rs.总分);
end loop;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询