我有这个程序,我想修改它以选择给定参数不为空的行
Create PROC ViewclassCourses
(
@pClassID int = null,
@pcourseID int = null,
@pMinMark decimal(5,2)=null,
@pMaxMark decimal(5,2)=null
)
as
select ClassID,CourseID,minmark,maxmark from ClassCourses
Go
例如,如果我输入 ViewclassCourses @ pclassID = 1,@ pMaxMark = 100 它就像
一样select ClassID,CourseID,minmark,maxmark from ClassCourses where @pclassID=1 and @pMaxMark=100'
答案 0 :(得分:0)
@pMaxMark创建PROC ViewclassCourses ( @pClassID int = null, @pcourseID int = null, @pMinMark decimal(5,2)= null, @pMaxMark decimal(5,2)= null ) 如
SELECT ClassID,CourseID,minmark,maxmark FROM ClassCourses WHERE @pClassID IS NOT NULL AND @pcourseID IS NOT NULL
Go
答案 1 :(得分:0)
我认为你只想在非null的情况下使用参数? 在我的工作中,我们通常喜欢这样:
Create PROC ViewclassCourses
(
@pClassID int = null,
@pcourseID int = null,
@pMinMark decimal(5,2)=null,
@pMaxMark decimal(5,2)=null
)
as
select ClassID,CourseID,minmark,maxmark from ClassCourses
where ClassId = coalesce(@pClassID, ClassId)
and CourseID = coalesce(@pcourseID , CourseID)
and minmark = coalesce(@pMinMark , minmark)
and maxmark = coalesce(@pMaxMark , maxmark)
Go
你也可以写where @pClassId is null or ClassId = @pClassId
。我们刚刚采用了“COALESCE
模式”。