2014-10-06 115 views
2

執行存儲過程: Exec [usp_SummaryReport] 77,1,'[Name]','2014-10-06 11:45:21.170','2014- 10-06 11:45:21.170',[Name] 我得到這個錯誤
' - '附近語法不正確SQL中' - '語法不正確

謝謝大家。我糾正了它。這是價值傳遞的問題。

+1

''[Name]'似乎不正確... – 2014-10-06 07:16:28

+4

發佈的'exec'語句沒有錯。我會說這個錯誤是由'usp_SummaryReport'的定義中的某處引起的,因爲傳遞給它的值很可能在某種'sp_executesql'調用中使用。 – md4 2014-10-06 07:20:17

+0

是的 - 它在查詢中。現在日期的問題可能會被處理並解析爲字符串。 – 2014-10-06 07:21:28

回答

0

您的過程通過連接它的部分動態地構建SQL。

如果您沒有這種語法錯誤,您將不會得到這種類型的語法錯誤,因爲該過程在創建時進行了語法檢查。剩下的唯一可能是程序自己創建一些SQL並嘗試執行它。

這個動態構建的SQL是給你這個錯誤的原因。沒有看到實際的代碼,我們不可能說爲什麼這個SQL給你這個錯誤。


最有可能你試圖通過直接串聯的日期到SQL,而不是使用參數容易受到SQL注入,但我們沒有這方面的證據。

1

如上所示,請確認您是否動態創建sqlscript,然後執行?.如果是,那麼在執行腳本之前解決這個問題就是附加這個代碼。

...... statement 
    print @query 
    EXEC sp_executesql @query 
.... 

在SSMS中,在消息窗口中,您可以獲得準確的查詢問題。您可以複製並過去新的查詢窗口,修改它,最後在主sp的sql腳本中進行替換。