Sqlserver2005数据库如何写带参数的存储过程?

如上
2024-12-28 00:21:41
推荐回答(2个)
回答1:

给你一个我以前做过的例子吧。有什么不会的可以交流一下
创建一个存储过程展示学生成绩排名
输入参数:考试代码、班级编码、科目编码
要求:如果班级为*,则表示所有班级
如果科目为*,则表示所有科目
--存储过程
if exists(select * from dbo.sysobjects where name='studentpm'and xtype='p')
begin
drop PROCEDURE [studentpm]
end
go
CREATE PROCEDURE studentpm @SCNo varchar(10),@CLNo varchar(10),@CNo varchar(10),@sMsg varchar(200) out
AS
declare @SQL varchar(8000)
Begin
if not exists(select * from Score sc,Class cl,Cource co,Student st
where sc.SNo=st.SNo and sc.CNo=co.CNo and cl.CLNo=st.SClassNo and sc.SCNo=@SCNo)
begin
SET @sMsg='考试代码不存在'
--print(@sMsg)
return (-1)
end
set @SQL='select st.SName,sc.SCGrade,sc.SCNo from Score sc,Class cl,Cource co,Student st
where sc.SNo=st.SNo and sc.CNo=co.CNo and cl.CLNo=st.SClassNo'
if (@CLNo<>'*')
set @sql=@sql +' and cl.CLNo='''+@CLNo+''''
if @CNo<>'*'
set @sql=@sql +' and co.CNo='''+@CNo+''''
set @sql=@sql+' order by sc.SCGrade desc'
print (@sql)
exec (@sql)
Return 1
End
go
调用:
declare @sMsg varchar(200)
declare @iRtn int
EXEC MyTestDB.DBO.studentpm '003','002','002',@sMsg out
EXEC MyTestDB.DBO.studentpm '003','*','*',@sMsg out
EXEC @iRtn=MyTestDB.DBO.studentpm '004','*','*',@sMsg out
--print(@iRtn)
print(@sMsg)

回答2:

create procedure 储存过程名字
@课程号 char(3)='101';
as
select 学号,课程号,成绩 from XS_KC
where 课程号=@课程号
本题是从XS_KC表中查询选修课程号为101的学生的学号,课程号,成绩;输入参数为课程号