2013-08-25 19 views
1

設置變量表示錯誤我已存儲這樣的程序:而在存儲過程

create PROCEDURE [dbo].[Test1] 
    @startdate datetime(100), 
    @enddate datetime(100) 
    set date1 = CONVERT(datetime, @startdate + ' 00:01:00', 120) 
    set date2 = CONVERT(datetime, @enddate + ' 00:23:59', 120) 
as 
begin 
    select t.PlateNo 
    from Transaction_tbl t 
    WHERE dtime between @date1 + ' 00.01.00.00' 
    AND @date2 + ' 23:59.59.00' 
end 

當執行此獲得兩個錯誤消息「設置」關鍵字

附近有語法錯誤。

必須聲明標量變量@date1

+0

你已經設置了date1並且在查詢中使用@ date1(vs date1) - 不是同一個變量。希望這有助於 –

+0

我給set @ date1 ,,然後也得到錯誤 – user2674855

回答

0

我想你的意思是這樣的:

create PROCEDURE [dbo].[Test1] 
    @startdate varchar(100), 
    @enddate varchar(100) 
as 
begin 
    declare @date1 datetime = CONVERT(datetime, @startdate + ' 00:01:00', 120); 
    declare @date2 datetime = CONVERT(datetime, @enddate + ' 00:23:59', 120); 

    select t.PlateNo 
    from Transaction_tbl t 
    WHERE dtime between @date1 AND @date2; 
end; 

不過,我認爲你會更好地遵循我在你的答案中的建議上一個問題並傳遞參數date

+0

謝謝,很多,,爲我工作得很好 – user2674855

0

試試這個: -

create PROCEDURE [dbo].[Test1] 
    @startdate varchar(100), 
    @enddate varchar(100) 
as 
declare @date1 datetime 
declare @date2 datetime 
    set @date1 = CONVERT(datetime, @startdate + ' 00:01:00', 120) 
    set @date2 = CONVERT(datetime, @enddate + ' 00:23:59', 120) 

begin 
    select t.PlateNo 
    from Transaction_tbl t 
    WHERE dtime between @date1 + ' 00.01.00.00' 
    AND @date2 + ' 23:59.59.00' 
end