基于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 '李勇'
请指教这样写为什么不对啊,请高手指点,谢谢!
利用学生姓名查询该生选修的课程名和成绩
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 '李勇'
请指教这样写为什么不对啊,请高手指点,谢谢!
@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
)
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 '李勇'
select sno
from student
where Sname=@sname
}
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 '李勇'