创建和调用存储过程:查询Stu数据库中某个同学的选修课程的信息,包括学号,姓名,课程名称,成绩

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里面写输入参数

写完上面刷新所在数据库下的可编程性下的存储过程,可以看到已经建立了dbo.proc_selec

DECLARE @Sno char(10),@Sname varchar(20),@Cno char(4),@grade tinyint
   --声明学号,姓名,课程号,成绩四个变量
SET @Sno='201215121'--给Sno赋值
EXEC proc_select @Sno  output,@Sname out,@Cno  out,@grade  out--执行四个参数
SELECT @Sno 'Sno' ,@Sname 'Sname',@Cno 'Cno',@grade 'grade'
   --显示四个值,并分别取别名,如果没有单引号里的则显示无列名

执行后显示关于学号为‘201215121’的有关信息

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
exec p2 '201215121'

 

你可能感兴趣的:(数据库系统概论以及相关程序设计)