2015-09-04 199 views
1

時,我有一個存儲過程,如下圖所示:SQL「1900-01-01 00:00:00附近的語法不正確」。「試圖執行一個存儲過程

ALTER procedure [dbo].[test_stored_procedure] 

@id       nvarchar(20), 
@datefm      datetime, 
@dateto      datetime 

as 
    ... 
end 

然後我試圖調用使用下面的SQL上面的存儲過程:執行時

exec test_stored_procedure @searchKey, cast('1900-01-01 00:00:00' as datetime), cast('1900-01-01 00:00:00' as datetime) 

但是,我得到了以下錯誤:

Incorrect syntax near '1900-01-01 00:00:00'. 

如何解決這個問題?

回答

6

您需要使用:

DECLARE 
    @date_start DATETIME = '1900-01-01 00:00:00' 
    ,@date_stop DATETIME = '1900-01-01 00:00:00'; 

EXEC test_stored_procedure @searchKey, @date_start, @date_stop; 

或者:

EXEC test_stored_procedure @searchKey, '1900-01-01 00:00:00', '1901-01-01 00:00:00'; 

這是因爲你不能在參數使用功能與EXECdoc。你只能通過:

  1. 變量
  2. DEFAULT

[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ]

相關問題