基于ST数据库,创建下面的存储过程
  利用学生姓名查询该生选修的课程名和成绩
create procedure name_search
@sname varchar(20) 
as
begin
select Cname,Grade 
from  course,SC
where course.cno=sc.cno and sno={
select sno
from student
where Sname=@sname
}
end
exec  name_search '李勇'
请指教这样写为什么不对啊,请高手指点,谢谢!

解决方案 »

  1.   

    create procedure name_search
    @sname varchar(20) 
    as
    begin
    select Cname,Grade 
    from  course,SC
    where course.cno=sc.cno and sno in (
    select sno
    from student
    where Sname=@sname
    )
      

  2.   


    create procedure name_search
     @sname varchar(20) 
     as
     begin
     select Cname,Grade 
     from  course,SC
     where course.cno=sc.cno and sno={  =修改为in
     select sno
     from student
     where Sname=@sname
     }
     end
     exec  name_search '李勇'
     
      

  3.   

    where course.cno=sc.cno and sno={   将=修改为in
     select sno
     from student
     where Sname=@sname
     }
     
     
      

  4.   

    你的选择   <span style="color: #FF0000;">in</span>这句话什么意思啊?不懂?
      

  5.   

    感谢大家,问题解决啦;方法就像77C#+SQL说的改一下就可以啦
      

  6.   

    问题有两处:
    1、目前sql好像没地方用到{},只有()/[]。
    2、在现实生活中,重名是很常见的情况,你直接=,不一定有问题,但是也不一定不报错,也就是说重名的时候会报错,你可以使用distinct或者下面的in来避免这种情况。
    CREATE PROCEDURE name_search @sname VARCHAR(20)
     AS 
         BEGIN
             SELECT  Cname ,
                     Grade
             FROM    course ,
                     SC
             WHERE   course.cno = sc.cno
                     AND sno IN ( SELECT sno
                                  FROM   student
                                  WHERE  Sname = @sname )
         END
         EXEC name_search '李勇'