当前位置:首页 » 考试成绩 » 游标查询成绩超过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