存储过程基于给定参数查看表

时间:2013-10-01 13:33:26

标签: sql-server

我有这个程序,我想修改它以选择给定参数不为空的行

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'

2 个答案:

答案 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模式”。