台灣最大程式設計社群網站
線上人數
1247
 
會員總數:241126
討論主題:186798
歡迎您免費加入會員
討論區列表 >> MS SQL >> 動態SQL 不使用ex_executesql 的方法?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
動態SQL 不使用ex_executesql 的方法?
價值 : 20 QP  點閱數:345 回應數:3

樓主

pp039773
門外漢
0 1
18 1
發送站內信

各位先進好,
小弟有一段SQL 判斷如下:
or (CMSMC.MC002 = 'A11' and PURMA.MA002='B11')
or (CMSMC.MC002 = 'A12' and PURMA.MA002='B12')
or (CMSMC.MC002 = 'A13' and PURMA.MA002='B13')
or (CMSMC.MC002 = 'A14' and PURMA.MA002='B14' )
or (CMSMC.MC002 = 'A15' and PURMA.MA002='B15' )
or (CMSMC.MC002 = 'A16' and PURMA.MA002='B16' )
or (CMSMC.MC002 = 'A17' and PURMA.MA002='B17' )
or (CMSMC.MC002 = 'A18' and PURMA.MA002='B18' )

因每次條件變更時都要進SQL 重新修改,想把這段邏輯改為Excel Upload to Table
然後由user 自行維護,但想了一陣,似乎只能用Dynamic SQL實現(sp_executesql)
但因為這段statement 是個view ,改為Dynamic SQL相關的程式也要改,工程太耗大...
故想請教是否有可能create 一table :
CREATE TABLE [dbo].[TEST1](
[MC002] [nvarchar](10) NULL,
[MA002] [nvarchar](10) NULL
) ON [PRIMARY]

然後實現上面的sql 的條件判斷
在此先感謝大家的幫忙了.



搜尋相關Tags的文章: [ dynamic sql ] , [ 動態SQL ] ,
本篇文章發表於2016-12-29 09:10
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

asp小菜渣
檢舉此回應
你說的方式是可行的。



就不需要再寫一堆OR,還得去改程式。
試試看呢?
本篇文章回覆於2016-12-29 10:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
建一個對照檔 把你要where 都放在裡面 萬一條件有改 就去編輯對照檔

select * from table where 欄位 in(select 對應欄位 from 對帳檔...)
本篇文章回覆於2016-12-29 12:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

pp039773
檢舉此回應
asp大大,經測試筆數正確,且SQL也變得更精簡
20分奉上

ps: 這裡真的是高手如雲呀~
本篇文章回覆於2016-12-29 14:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.