故我在網頁的前端設計GridView讓User選取資料 ,
後端則再判斷User所選取的PK,組合起來傳進Stored Procedures 。
EX:
刪除 | PK_ID(int) | 員工編號(varchar) | 員工姓名(nvarchar) |
V | 1 | 0001 | Mike |
3 | 0004 | Alvis | |
V | 19 | 0023 | Mary |
如上圖所示,User選取的 PK_ID = 1 及 PK_ID = 19 這兩筆資料要進行刪除
於是我用了String將PK組合起來
string strID = string.Format("{0},{1}",1,19); //結果 strID 應該是 1,19
而在SQL 部分
@Parameter = strID;
DELETE FROM tb_Employee
WHERE PK_ID IN (@Parameter);
/*
理論上,以上的SQL指令應該是可以執行的才對啊!
殊不知,執行後卻出現
varchar無法轉換為int 的Error出現
*/
因為我們為了貪圖方便,所以@Parameter是以組字串的方式,故會將@Parameter為varchar或nvarchar,而當用這種方式在SQL執行時,系統會自動辨識為"字串",為了要解決這個問題,所以我們應該要把指令改為下列方式。
EXEC('DELETE FROM tb_Employee
WHERE PK_ID IN ('+@Parameter+')')
這樣系統才會正確的執行,提供給大家囉~
沒有留言:
張貼留言