更改存储过程中的参数值

时间:2013-05-03 18:25:32

标签: sql

我有一个视图的存储过程,它总是超时,它用于查找某些日期范围的数据。这对我来说是一个全新的概念,我已经为主日期范围设置了存储过程,如果我需要特定的日期,我无法弄清楚如何正确执行它。这是代码和问题

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[COL_Run_DOM_Parameters]
@StartDate varchar (50),
@EndDate varchar (50)
AS
SET NOCOUNT ON
SELECT *
FROM dbo.COL_V_GEMS_DOM_FCT
WHERE REC_EFF_STT_DT BETWEEN '2010-01-01' AND '2012-12-31'

当我执行时,我会这样做:

Execute COL_Run_DOM_Parameters @StartDate = '2011-12-22', @EndDate '2012-05-17'

但是当我执行它时,它仍然提供了2010年到2012年之间的所有数据,而不是我要求的日期范围。在我的代码中哪里有错误?

3 个答案:

答案 0 :(得分:4)

您需要更改查询以引用参数!

ALTER PROCEDURE [dbo].[COL_Run_DOM_Parameters]
  @StartDate varchar (50),
  @EndDate varchar (50)
AS
SET NOCOUNT ON
SELECT *
FROM dbo.COL_V_GEMS_DOM_FCT
WHERE REC_EFF_STT_DT BETWEEN @StartDate and @EndDate

就像你曾经一样执行。

答案 1 :(得分:1)

SELECT * 来自dbo.COL_V_GEMS_DOM_FCT 在'2010-01-01'和'2012-12-31'之间的REC_EFF_STT_DT

你已经硬编了我朋友的日期,你没有使用你的变量

答案 2 :(得分:1)

将查询更改为

    SELECT *
    FROM dbo.COL_V_GEMS_DOM_FCT
   WHERE REC_EFF_STT_DT BETWEEN @StartDate AND @EndDate

并调用SP

Declare @StartDate = '2012-02-01'
Declare @EndDate = '2013-02-01'
EXEC COL_Run_DOM_Parameters @StartDate @EndDate