因爲你沒有提供關於代碼如何工作的詳細信息,所以我會做一些瘋狂的猜測,'參數化查詢'是指一個存儲過程,並且通過它的整個文本調用存儲過程(不是最佳做法,但我不知道你使用的軟件有什麼限制)。
無論如何,原因pad
或proc
可能會導致問題是因爲您沒有明確告訴服務器這些是字符串。由於我從未真正理解的原因,TSQL將允許您將單字符串傳遞給(n)個varchar參數的過程。一個簡單的例子是:
EXEC sp_helpdb master
嚴格來說,這應該會給語法錯誤。正確的語法是:
EXEC sp_helpdb 'master'
但似乎與開發者去「嘿,這是少打字,這是偉大的生產力!」所以查詢起作用。
現在,如果你的程序被稱爲像這樣:
EXEC p_find_recipe thai
這將通過字符串「泰」,一切都會按預期運行。但是,當使用保留字如proc
或file
或table
等...會導致語法錯誤,並且您需要確保將引號放在值的周圍才能正常工作。
所有這一切說: - 語法錯誤應立即返回,它不應該需要10秒 - AFAIK「墊」不是reseverd關鍵字
所以我不知道超適用於你的問題,所以它很有可能我只花了10分鐘打字沒什麼=)
無論如何,你可能需要提供一些額外的輸入你正在使用什麼語言,你的意思是參數化查詢(也許你意思是後面填寫?的SELECT * FROM table WHERE field = ?
語法?),最好是用一些示例代碼。
墊不是我知道的關鍵字。您最好將實際使用的代碼(以及一些示例數據)發佈給我們看看。 –
參數化查詢的一個主要目的是清楚地將這些值與語言分開。它應該完全不受使用保留字的影響。 – phatfingers
你的'where'條款是什麼?你使用「喜歡」,自由文本還是其他方法?請張貼一些代碼... –