2016-06-11 4 views
1

У меня есть хранимая процедура, которая принимает один параметр как DATE. который вернет данные за эту дату из таблицы.Сохраненная процедура не возвращает никаких данных за прошедшую дату

ALTER PROCEDURE [dbo].[UserReportData] 
    @As_ONDATE Datetime 
AS 
BEGIN 
    DECLARE @REPORTDATE datetime   
    --DECLARE @OPENING INT  

    SELECT * 
    INTO #temptable 
    FROM 
     (SELECT 
      a.CUser_id, b.User_Id, a.U_datetime AS REPORTDATE 
     FROM 
      inward_doc_tracking_trl a 
     INNER JOIN 
      user_mst b ON a.CUser_id = b.mkey 
         AND a.U_datetime = @As_ONDATE) AS x 

    DECLARE Cur_1 CURSOR FOR 
     SELECT CUser_id, User_Id FROM #temptable 

    OPEN Cur_1 

    DECLARE @CUser_id INT 
    DECLARE @User_Id INT 

    FETCH NEXT FROM Cur_1 INTO @CUser_id, @User_Id 

    WHILE (@@FETCH_STATUS = 0) 
    BEGIN 
     SELECT U_datetime 
     FROM inward_doc_tracking_trl       
     WHERE U_datetime = @As_ONDATE      

     UPDATE #temptable 
     SET REPORTDATE = @REPORTDATE 
     WHERE CUser_id = @CUser_id 
      AND User_Id = @User_Id 
      and 

     FETCH NEXT FROM Cur_1 INTO @CUser_id, @User_Id 
    END 

    CLOSE Cur_1 
    DEALLOCATE Cur_1 

    SELECT * FROM #temptable 

    DROP TABLE #temptable       
END 

Когда я выполнить хранимую процедуру, как это, я не получаю строки, возвращаемые

exec UserReportData '20160610' 

, но в таблице у меня есть строки с этой датой.

Как работает под запрос

SELECT U_datetime 
FROM inward_doc_tracking_trl  
WHERE u_datetime = '2016-06-10 14:56:11.000' 

Итак, почему не существует никаких записей, возвращаемых при выполнении хранимой процедуры?

ответ

5

, потому что ваша колонка u_datetime содержит дату & время

один способ заключается в обращении в предложении WHERE

and a.U_datetime >= @As_ONDATE 
AND a.U_datetime < DATEADD(DAY, 1, @As_ONDATE) 

Кроме того, вы можете рассмотреть вопрос о преобразовании ваш запрос не использовать Курсор

+0

, где должен Я добавляю ваш ответ, я имею в виду, в каком разделе?. 'Выберите a.CUser_id, b.User_Id, a.U_datetime \t \t \t \t \t \t \t, как REPORTDATE ....' здесь ?? – BNN

+0

Да, я добавил в предложение where, и он отлично работал. thanku so much – BNN

+0

да. в предложении 'WHERE' – Squirrel

Смежные вопросы