更改存储过程中的参数值(Changing Parameter Values in Stored Procedures)

我有一个存储过程,其视图非常大,总是超时,它用于查找某些日期范围的数据。 这对我来说是一个全新的概念,我为主日期范围设置了存储过程,我只是不知道如何在需要特定日期时正确执行它。 这是代码和问题

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年间的数据,而不是我要求的日期范围。 我的代码中哪里有错误?

I have a stored procedure for a view that is so massive it always times out, it is used to find data for certain date ranges. This is an entirely new concept to me, I have the stored procedure set up for the main date range, I just cant figure out how to Execute it properly if I need specific dates. Here is the code and issue

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'

When I execute I do it like:

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

But when I execute it still gives me all the data between 2010 and 2012 instead of the date range I asked for. Where in my code is there a mistake?

最满意答案

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

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

像你一样执行。

You need to change your query to reference the parameters!

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

Execute just like you have been.

更改存储过程中的参数值(Changing Parameter Values in Stored Procedures)

我有一个存储过程,其视图非常大,总是超时,它用于查找某些日期范围的数据。 这对我来说是一个全新的概念,我为主日期范围设置了存储过程,我只是不知道如何在需要特定日期时正确执行它。 这是代码和问题

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年间的数据,而不是我要求的日期范围。 我的代码中哪里有错误?

I have a stored procedure for a view that is so massive it always times out, it is used to find data for certain date ranges. This is an entirely new concept to me, I have the stored procedure set up for the main date range, I just cant figure out how to Execute it properly if I need specific dates. Here is the code and issue

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'

When I execute I do it like:

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

But when I execute it still gives me all the data between 2010 and 2012 instead of the date range I asked for. Where in my code is there a mistake?

最满意答案

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

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

像你一样执行。

You need to change your query to reference the parameters!

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

Execute just like you have been.