590
社区成员
发帖
与我相关
我的任务
分享
createuser like '%['+@createuser+']%'
改为:
(createuser is null or createuser like '%['+@createuser+']%' )
其他条件类似。
alter PROCEDURE [dbo].[bha_pad10000] -- 存储过程名
@createuser nchar(20) = null, --设置输入参数
@primarytag1 datetime = null,
@primarytag2 datetime = null,
@prcode char(12)= null,
@orderno varchar(12)= null,
@part varchar(30)= null,
@mono char(12)= null,
@prseq char(4)= null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
/*test script
[dbo].[bha_pad10000]
[dbo].[bha_pad10000] 'erere'
*/
SET NOCOUNT ON;
Declare @strsql nvarchar(max)
set @strsql=N'SELECT distinct 创建人=createuser, --创建者
制程代号=prcode, --制程代号
料号=part, --料单
订单号=orderno, --订单号
制令号=mono, --制令号
制令序号=moseq,
扫描时间=primarytag,
制程序号=prseq, --制程序号
创建时间=createdate, --创建时间
检测码=checkyn,
料号编号=partcode,
产品编码=productcode,
内部编号=innercode,
外部编号=outtercode
from bha_pda10000 where
1=1 '+coalesce(' and createuser like ''%['+rtrim(@createuser)+']%''','')
--注意日期@primarytag1,@primarytag2格式
+coalesce(' and (createdate between '+cast(@primarytag1 as varchar(30))+' and '+cast(@primarytag1 as varchar(30))+') ','')
+coalesce(' and prcode like ''%['+rtrim(@prcode)+']%''','')
+coalesce(' and orderno like ''%['+rtrim(@orderno)+']%''','')
+coalesce(' and part like ''%['+rtrim(@part)+']%''','')
+coalesce(' and mono like ''%['+rtrim(@mono)+']%''','')
+coalesce(' and prseq like ''%['+rtrim(@prseq)+']%''','')
print @strsql
exec(@strsql)
End
试试这个吧, 注意一下楼上提到的[ ]得问题,除非你得数据都是用[] 开头和结尾的,不然代码中的[] 要去除。