常常會遇到必須自己組合的sql
像是一直and下去的查詢條件
或是where的值是必須經過一段複雜的運算才出來的這種
之前的作法就是很直覺的把字串組合起來
像是
set @deleteSql = 'delete from aaa where projId = @paramPrjId and place not in ('+@strPlace+') '; exec @deleteSql
其中in 裡面的資料就是上面說的where的值是必須經過一段複雜的運算才出來的這種
結果因為一串的分號跟逗號,造成字串打架
還以遇到數字型態也會出問題
他會一直說我沒有辦法把數字跟字串組合起來
(明明c#跟java就可以...)
遇到問題當然有請google大神
我想我一天8小時的工時大概有4小時在google吧...
原來有ms sql server有一個指令叫 sp_executesql
可以在後面加上n個參數,並且定義每個參數的型態
範例如下
set @deleteSql = 'delete from aaa where projId = @paramPrjId and place not in ('+@strPlace+') '; EXECUTE sp_executesql @deleteSql, N'@paramPrjId int', @paramPrjId = @prjId
沒有留言:
張貼留言