當前位置:首頁 » 考試成績 » 游標查詢成績超過70分學生學號和姓名

游標查詢成績超過70分學生學號和姓名

發布時間: 2020-12-02 15:31:44

① 使用游標取出schooldb資料庫stu_info表中學生的學號和姓名,並顯示出來

|CREATE OR REPLACE PROCEDURE DISPLAY
(
O_MAG OUT VARCHAR2
)
AS
CURSOR C_STU IS SELECT STU_ID, STU_NAME FROM stu_info;
R_STU C_STU%ROWTYPE;
BEGIN
OPEN C_STU;
LOOP
FETCH C_STU INTO R_STU;
EXIT WHEN C_STU%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(R_STU.STU_ID|| R_STU.STU_NAME);
END LOOP;
CLOSE C_STU;
EXCEPTION
WHEN OTHERS
THEN O_MAG := '有錯誤!專屬';
END;

② SQL 游標問題 利用游標給等級欄位賦值

給你改了一下

declarelevel_curcursor
forselect學號,成績,等級,課程號from選課表
forupdateof等級
declare@學號char(10)
declare@等級char(1)
declare@成績int
declare@課程號char(2)
openlevel_cur
fetchnextfromlevel_curinto@學號,@成績,@等級,@課程號
while@@fetch_status=0
begin
if@成績>95
begin
update選課表set等級='P'where學號=@學號and成績=@成績and@課程號=課程號
end
elseif@成績<=95
begin
update選課表set等級='F'where學號=@學號and成績=@成績and@課程號=課程號
end
fetchnextfromlevel_curinto@學號,@成績,@等級,@課程號--你這句只取游標沒放進變數中
end
closelevel_cur
deallocatelevel_cur

取游標時我多取了一個欄位課程號,其他定義變數時的長度你不用考慮,那是我剛才自己做測試用的,我寫的有一句注釋,還有兩個update語句,你肯定是取游標時90分那個最後取出的,而你的update語句是全表update,而不是逐行update,所以就以最後一次為准了,變成了F

③ 新建查詢,用游標實現查詢學號為某某的學生姓名,顯示結果如圖,用print語句顯示結果

DECLARE cursor1 CURSOR FOR
SELECT name FROM student_info where student_id='某某';

OPEN cursor1
FETCH NEXT FROM cursor1 INTO @name
WHILE @@FETCH_STATUS = 0

BEGIN
PRINT '姓名版:權'+@name
FETCH NEXT FROM cursor1 INTO @name

END
CLOSE cursor1
DEALLOCATE cursor1

④ 創建一個存儲過程,給定某學生學號,要求查詢出該學生的姓名,所選課程名和成績.(SQL SERVER)

/*創建存儲過程*/

CREATE PROCEDURE proc_select--建立存儲過程

@Sno char(10) output,--輸入輸出參數

@Sname varchar(20) out,--輸出參數

@Cno char(4) out,--輸出參數

@grade tinyint out--輸出參數

AS

SELECT @Sname=Sname,@Sno=Student.Sno,@Cno=cno,@grade=grade --select裡面寫輸出參數

FROM Student,SC --從學生表,選修表中查詢

where @Sno=Student.Sno--where裡面寫輸入參數

/*根據給定學號查詢*/

CREATE PROC proc_lab4 --存儲過程中含有游標

@Sno char(10)

as

declare @ssno char(10),@ssname char(20),@ccname char(20),@scg int--聲明四個變數

declare cursor_s cursor--聲明游標

for

select Student.Sno,Sname,Cname,grade

from Student,Course,SC--從三個表中選擇學號、姓名、課程名、成績

where Student.Sno=SC.Sno and Course.Cno=SC.Cno and Sname=@Sname;--連接

open cursor_s--打開游標

fetch next from cursor_s into @ssno,@ssname,@ccname,@scg

while @@fetch_status=0

begin

print @ssno+@ssname+@ccname+convert(char(10),@scg)

fetch next from cursor_s into @ssno,@ssname,@ccname,@scg

end

close cursor_s--關閉游標

deallocate cursor_s--釋放游標

exec proc_lab4 '201215121'

--只帶輸入參數

CREATE PROC p2

@sno char(10)

as

select Student.Sno,Sname,Cname,grade

from Student,SC,Course

where Student.Sno=SC.Sno and SC.Cno=Course.Cno

and Sname=@sname

(4)游標查詢成績超過70分學生學號和姓名擴展閱讀:

創建存儲過程基本語法

create procere sp_name

@[參數名] [類型],@[參數名] [類型]

as

begin

.........

end

以上格式還可以簡寫成:

create proc sp_name

@[參數名] [類型],@[參數名] [類型]

as

begin

.........

end

/*註:「sp_name」為需要創建的存儲過程的名字,該名字不可以以阿拉伯數字開頭*/

⑤ ORACLE,學生講座管理系統,編寫存儲過程輸出學分少於3分的學生學號(使用游標)

我寫的是輸出了學號、姓名、多加了個學分,你如果不想要了去掉就行。沒有環境,無法調試,你自己在調試一下吧。希望能幫到你。

create or replace procere p_getLessStu
(
o_result out varchar2
)
as
-- 第一步:定義游標
cursor c_student is select t.xh,t.jzxf,t.xm
from xsbmb t
where t.jzxf < 3
order by t.xh;
begin
-- 第二步:打開游標
open c_student;
-- 第三步:使用游標
loop
fetch c_student into v_xh,v_xf,v_xm;
exit when c_student%nofound;
dbms_output.putline(v_xh || ' ' || v_xf || ' ' || v_xm);
end loop;
-- 第四步:關閉游標
close c_student;
o_result := 0;
exception when others then
o_result := 1;
end;

⑥ 編寫一個存儲過程,依據輸入的學號參數,統計該學生的平均分和總分,要求不用游標

createprocereP1(@xhvarchar(10))as
selectavg(成績)平均分,sum(成績)總分from修課表where學號=@xh

⑦ 我是初學者,求SQL/PL使用游標實現:將學生學號,姓名,課程名,成績格式化輸出

cursor cr_student is
select 學生學號,姓名,課程名,成績 from 學生表;

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919