创建一个存储过程,给定某学生学号,要求查询出该学生的姓名,所选课程名和成绩.(SQL SERVER)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个存储过程,给定某学生学号,要求查询出该学生的姓名,所选课程名和成绩.(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
扩展资料:
创建存储过程基本语法
create procedure sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
以上格式还可以简写成:
create proc sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
/*注:“sp_name”为需要创建的存储过程的名字,该名字不可以以阿拉伯数字开头*/
参考资料:百度百科-存储过程
参考技术A select name,course,grades from student sleft join course c on c.sid = s.sid
left join achievement a on a.cid = c.cid
where s.id = 10追问
这个没有创建存储过程吧。。。。
参考技术B 创建过程:CREATE PROCEDURE PROC_STU
@SNO NCHAR(9)
AS
SELECT SNAME,CNAME,GRADE
FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO
WHERE SNO=@SNO
调用过程:
DECLARE @SNO NCHAR(10)
SET @SNO='161343001'
EXEC PROC_STU @SNO
数据库--存储过程
一、学习目标
熟悉存储过程的定义和使用,熟练运用 select ,update ,insert ,delete 命令完成对学生信息数据库的查询、更新、添加、删除操作。
二、学习内容
学生(学号,年龄,性别,系名)
课程(课号,课名,学分,学时)
选课(学号,课号,成绩)
根据上面基本表的信息定义一个存储过程,完成下面功能:
入口参数:学号
1 显示学生的选课信息
2 如果学生没选课,让他选1号课,插入一条选课记录,成绩为0
3 如果学生所有课都不及格,删掉该学生记录
三、SQL代码
create procedure shiyan7(@sno char(10))
as
if @sno in (select xe.sno from xe)
begin
declare @w int
set @w=(select max(grade) from xe where xe.sno=@sno)
if @w<60
begin
print此学生成绩不合格,予以删除
delete from xe where xe.sno=@sno
end;
else
begin
print选课信息:
select stu.sno,stu.sname,xe.cnum,xe.grade
from stu,xe
where stu.sno=xe.sno and stu.sno=@sno
end;
end;
else
begin
print此学生未选课
insert into xe
values(@sno,01,0)
end;
exec shiyan7 200511101
exec shiyan7 200511104
exec shiyan7 200511811
四、结果截图
初始数据:
最终结果数据:
五、小结
(1)创建存储过程
CREATE ORREPLACE PROCEDURE 过程名([参数1参数2..…])AS <过程化 SOL 块>:
存储过程包括过程首部和过程体。在过程首部,“过程名”是数据库服务器合法的对象标识;参数列表[参数1,参数2,…]用名字来标识调用时给出的参数值,必须指定值的数据类型。可以定义输入参数、输出参数或输入/输出参数,默认为输入参数,也可以无参数(2)执行存储过程
CALL/PERFORM PROCEDURE 过程名([参数1,参数2.…]);使用CALL或者PERFORM等方式激活存储过程的执行。在过程化SQL中,数据库服务器支持在过程体中调用其他存储过程
(3)修改存储过程
可以使用ALTER PROCEDURE重命名一个存储过程:
ALTER PROCEDURE过程名1 RENAME TO 过程名2;
可以使用ALTER PROCEDURE重新编译一个存储过程:
ALTER PROCEDURE过程名COMPILE;
(4)删除存储过程DROP PROCEDURE过程名0;
使用存储过程具有以下优点:
(1)由于存储过程不像解释执行的SQL语句那样在提出操作请求时才进行语法分析和优化工作,因而运行效率高,它提供了在服务器端快速执行SQL语句的有效途径。
(2)存储过程降低了客户机和服务器之间的通信量。客户机上的应用程序只要通过网络向服务器发出调用存储过程的名字和参数,就可以让关系数据库管理系统执行其中的多条SQL语句并进行数据处理。只有最终的处理结果才返回客户端。
(3)方便实施企业规则。可以把企业规则的运算程序写成存储过程放入数据库服务器中,由关系数据库管理系统管理,既有利于集中控制,又能够方便地进行维护。当企业规则发生变化时只要修改存储过程即可,无须修改其他应用程序。
以上是关于创建一个存储过程,给定某学生学号,要求查询出该学生的姓名,所选课程名和成绩.(SQL SERVER)的主要内容,如果未能解决你的问题,请参考以下文章
建立一个存储过程student_info,要求根据班级查询学生的学号、姓名、课程号和分数(表结构如表2,表3)