簡體   English   中英

在存儲過程中更改參數值

[英]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年之間的所有數據,而不是我要求的日期范圍。 我的代碼中哪里有錯誤?

您需要更改查詢以引用參數!

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

像以前一樣執行。

選擇*從dbo.COL_V_GEMS_DOM_FCT在'2010-01-01'和'2012-12-31'之間的 REC_EFF_STT_DT中

您已經將日期硬編碼了,我的朋友,您沒有使用變量

將查詢更改為

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM