最近学了下数据库,为了练习下T-SQL,也是为了管理班级的需要,有所有课程学生绩点(S#,姓名,课程名。。。)与学生每门课程绩点(S#,课程,绩点)两个表,我先将数据统计于表一中,由于有时从第一个表向第二个表插入些个别数据时,或者更新些数据时有点麻烦,于是就想能不能一步完成,我就摸索创建了个存储过程,完成了目标。
T-SQL如下:
CREATE procedure [dbo].[add_gpa] @姓名 char(20),@课程 char(20),@绩点 float as
declare @学号 char(20)
begin
select @学号=a.S# from 学生所有信息 a where a.Sname=@姓名 //从学生信息表中通过姓名获得学号
select @学号
exec('update 所有课程学生绩点 set '+@课程+ '='+ @绩点+ ' where S#='+@学号)
update 学生每门课程绩点 set gpa=@绩点 where S#=@学号 and subject= @课程
end
GO
实质上,困难点就在怎么将字符串变为列名,经过尝试后用exec(),可以解决这个问题,网上搜到的解决方案。