2013-05-03 2 views
1

У меня есть хранимая процедура для представления, которое настолько массивно, что оно всегда не работает, оно используется для поиска данных для определенных диапазонов дат. Это совершенно новая концепция для меня, у меня есть хранимая процедура, настроенная для основного диапазона дат, я просто не могу понять, как выполнить ее правильно, если мне нужны конкретные даты. Вот код и вопросИзменение значений параметров в хранимых процедурах

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 годами, а не диапазон дат я спросил для. Где в моем коде есть ошибка?

ответ

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 

Выполнение, как и вы.

+0

Работал отлично, спасибо вам большое! – user2119980

1

SELECT * FROM dbo.COL_V_GEMS_DOM_FCT ГДЕ REC_EFF_STT_DT МЕЖДУ '2010-01-01' AND '2012-12-31'

вы жёстко даты моего друга, вы не используете переменные

+0

Итак, это должен быть мой код параметра? – user2119980

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 
Смежные вопросы