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