plsql存儲過程游標
可以的,正在執行中,那個執行按鈕旁邊有個紅色的閃電的按鈕,點一下那個按鈕,就可以強制中斷了。
② PLSQL中如何強制關閉執行的存儲過程
試試用系統管理員登錄Oracle Enterprise Manager Console,幹掉存儲過程的session看可以不
③ 創建存儲過程報錯如下: 警告: 創建的過程帶有編譯錯誤。
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 procere 全班排名(
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;