存储过程参数问题请教(查询条件变化)
sqlserver吧
全部回复
仅看楼主
level 1
伊铭恋 楼主
USE [DB]
GO
/****** Object: StoredProcedure [dbo].[BZ生产报警记录] Script Date: 12/29/2015 10:42:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[BZ生产报警记录]
@条件 datetime,@开始时间 datetime,@结束时间 datetime
as
SELECT 序号,单号,订单日期 FROM 数据源 WHERE @条件 BETWEEN CONVERT(DATETIME,@开始时间, 102) AND CONVERT(DATETIME, @结束时间, 102) and 序号 in (SELECT 序号 FROM 数据源 WHERE 序号 NOT IN (SELECT 序号 FROM 进度总表 where 生产时间 is not NULL))
请问@条件这个类型该如何定义呢???
现在查询会报错Error converting data type nvarchar to datetime
运行的时候是exec BZ生产报警记录 @条件=订单日期,@开始时间='2015-11-25',@结束时间='2015-11-25'
2015年12月30日 06点12分 1
level 1
ALTER procedure [dbo].[BZ生产报警记录]
@条件 sysname-- 换成sysname
,@开始时间 datetime,@结束时间 datetime
as
BEGIN
IF @条件='订单日期'
begin
SELECT 序号,单号,订单日期 FROM 数据源
WHERE 订单日期
BETWEEN CONVERT(DATETIME,@开始时间, 102)
AND CONVERT(DATETIME, @结束时间, 102) and
序号 in (SELECT 序号 FROM 数据源 WHERE 序号 NOT IN (SELECT 序号 FROM 进度总表 where 生产时间 is not NULL))
end
ELSE IF @条件='其他日期'
begin
SELECT 序号,单号,订单日期 FROM 数据源
WHERE 其他日期
BETWEEN CONVERT(DATETIME,@开始时间, 102)
AND CONVERT(DATETIME, @结束时间, 102) and
序号 in (SELECT 序号 FROM 数据源 WHERE 序号 NOT IN (SELECT 序号 FROM 进度总表 where 生产时间 is not NULL))
end
END
2015年12月31日 09点12分 3
直接把情况写入到存储过程中是吧。。。。
2016年01月02日 10点01分
1