文章目录
编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。
你只需:
- 补全右侧代码片段中 create proc_student_info 下的 Begin-End 区域间的代码,实现从表中查询所有学生基本信息的存储过程(存储过程名称一定要为 proc_student_info ,测试代码将调用 proc_student_info 存储过程,下面类似);
- 补全右侧代码片段中 create proc_sno 下的 Begin-End 区域间的代码,创建一个带参数的存储过程,输出指定学号的学生信息;
- 补全右侧代码片段中 create proc_add 下的 Begin-End 区域间的代码,创建一个带参数的存储过程,根据指定参数增加学生信息,如果学生编号已经存在则不能增加(调用此存储过程时,会依次填充各个字段值,请注意 insert 时,参数顺序与表字段的顺序一致);
- 补全右侧代码片段中 create student_del 下的 Begin-End 区域间的代码,创建一个带参数的存储过程,删除指定学号的学生信息。若成功,则输出 successfully deleted ;若没有该学号,则输出 No such student 。
表 student 的字段类型除了 birthday 是 date 类型,其余均为 varchar 类型,表内容如下:
代码块部分为需要填入的答案
USE studentdb
go
SET NOCOUNT ON
go
–********** create proc_student_info –
– Begin **********–
create proc proc_student_info
as
begin
select * from student
end
–********** End –
go
exec proc_student_info
go
– create proc_sno –
– Begin **********–
create proc proc_sno
@sno varchar(50)
as
begin
select * from student where sno=@sno
end
–********** End –
go
exec proc_sno ‘1001’
go
– create proc_add –
– Begin **********–
create proc proc_add
@sno varchar(50),
@sname varchar(50),
@sex varchar(10),
@date date,
@dis varchar(50),
@school varchar(50)
as
begin
if EXISTS(SELECT * FROM student WHERE sno=@sno)
print 'Already have a primary key '+@sno
else
insert into student values(@sno,@sname,@sex,@date,@dis,@school)
end
–********** End –
go
exec proc_add ‘1004’,‘HMM’,‘female’,‘2019-6-2’,‘English’,‘national school’
go
exec proc_student_info
go
– create student_del –
– Begin **********–
CREATE PROC student_del
@sno varchar(50)
as
begin
if EXISTS(select * from student where sno=@sno)
begin
delete from student where sno=@sno
PRINT 'successfully deleted'
end
else
PRINT 'No such student'
end
–********** End **********–
go
exec student_del ‘1001’
go
exec proc_student_info
go