创建带输入参数的存储过程
 创建一个带输入参数的存储过程proc_student,其中的输入参数用于接收课程号CNO,默认为“C601”,然后在表study中查询该成绩不几个的学生学号,接着在student表中查找这些学生的基本信息,包括学号,姓名,性别和所在系信息,最后输出。
 student表的属性为SNO NAME AGE DEPT SEX
 COURSE表的属性CNO CNAME 
 STUDY 表的属性SNO CNO GRADE..

解决方案 »

  1.   

    /*
    调用: exec sp_selstu 'c601'
    */
    create proc sp_selstu
        @cno varchar(10)=c601
    as
        select SNO,Name,Sex,Dept from student a where exists(select 1 from study where sno=a.sno and cno=@cno and grade<60)
    GO
      

  2.   


     有输出吗大哥?
     请问下那个 a是?
     select 1? ....
      

  3.   

    執行后就有輸出呀, a 是別名, select 1  是為了提高效率 只要有結果就返回真條件.
      

  4.   

    [code=
    --建立存储过程
    CREATE PROCEDURE info_stu
    @CNO  char ='C601', @stu_list cursorvary OUTPUT
        AS
    declare @STUDENTno as char
    DECLARE stu CURSOR
       FOR SELECT 学号=SNO ,姓名=name,所在系信息=dept FROM study a left join student b on a.sno=b.sno where a.grade='不及格' and a.CNO=@cno
    set @stu_list=stu
    open @stu_list 
    GO
    ]
    --执行该存储过程
    DECLARE @DispData CURSOR
    EXECUTE info_stu @CNO,@stu_list=@DispData OUTPUT
    FETCH NEXT FROM @DispData --循环输出游标内容
    WHILE (@@FETCH_STATUS=0)
       FETCH NEXT FROM @DispData
    CLOSE @DispData
    DEALLOCATE @DispData
    GO
    [/code]
      

  5.   

    5楼的好像漏了一个表名course。
    where exists(select 1 from study,course where sno=a.sno and cno=@cno and grade<60)
      

  6.   

    不对,应该将两个表进行连接。
     
    create proc sp_selstu 
    @cno varchar(10)=c601 
    as 
    select SNO,Name,Sex,Dept from student 
    where exists(select 1 from study inner join course 
    where study.sno=student.sno and cno=@cno and grade <60)