SQL写存储过程时参数作为条件的技巧

以下是在VMI项目中的实际处理方法:

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'MYTEST')

 BEGIN
    DROP  Procedure  MYTEST
 END
GO

CREATE PROCEDURE MYTEST
(
     @starttime datetime,--启始时间
  @endtime datetime,--结束时间
     @CbusType varchar(20)--采购类行
)
AS
begin
 --要求是如果不输入时间和类行时,全部输出结果
 --如果输入时间不输入类型,则输出时间段的所有数据,不论任何类型;
 --如果只输入类型,不输入时间,则输出相关类型,没有时间限制;
 SELECT  * FROM RdRecord
 WHERE   ((@starttime='' OR @endtime='') or ( dDate between @starttime and @endtime)) and
     (cBusType=@CbusType OR @CbusType=@CbusType)
end

posted @ 2009-09-08 18:42  科睿思博  阅读(508)  评论(0编辑  收藏  举报