2013-10-01 2 views
0

я имею эту процедуру и я хочу, чтобы изменить его, чтобы выбрать строки, в которых данные параметры не являются нулевымихранимой процедуры Для просмотра таблицы на основе заданных параметров

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

Я считать, что вы хотите использовать параметры, только если они не нулевой ? В своей работе мы обычно делаем так:

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».

+0

Спасибо, приятель, это работает gr8 :) – abodvdv

0

@pMaxMark Создать PROC ViewclassCourses ( @pClassID INT = нуль, @pcourseID INT = нуль, @pMinMark десятичной (5,2) = нуль, @pMaxMark десятичной (5,2) = NULL ) в

SELECT ClassID,CourseID,minmark,maxmark FROM ClassCourses WHERE @pClassID IS NOT NULL AND @pcourseID IS NOT NULL 
Go 
Смежные вопросы