台灣最大程式設計社群網站
線上人數
1856
 
會員總數:241182
討論主題:186829
歡迎您免費加入會員
討論區列表 >> VB.NET >> 如何併用 ExecuteNonQuery 執行EXEC SP與SqlCommand.Paramete
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何併用 ExecuteNonQuery 執行EXEC SP與SqlCommand.Paramete
價值 : 300 QP  點閱數:265 回應數:2

樓主

nickcatwang
門外漢
0 17
518 39
發送站內信

請問,是否能如以下範例,將MS-SQL SP的EXEC指令,含變數,直接給SqlCommand
同時再以Parameters.Add加入回傳變數?


以下詳述:
執行MS-SQL Stored procedure時,會用此Parameters.Add方式,一個一個加入變數,OUTPUT回傳的數值,亦以同樣方式加入。
老方法範例:



但由於這次必須送出的變數,有的會高達80個,股票財報各欄位數字等,所以超多,實在難以一個個去Parameters.Add。
為了維護方便,所以直接寫EXEC指令輸出變數,但是問題來了,無法取得OUTPUT。
嘗試的新方法範例:


我試著爬文,可是都是老方法,試了半天也搞不出來,請問各位先進,是否有人有解決之道?

另附上SQL



目前想到的蠢方法,是另寫一個temp db,把要取得的OUTPUT輸出到temp db,然後再用SqlCommand.ExecuteScalar去查詢。
不過這實在是蠢爆了...

搜尋相關Tags的文章: [ SqlCommand ] , [ SQL ] , [ Parameters.Add ] , [ Output ] ,
本篇文章發表於2017-03-17 18:20
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

nickcatwang
檢舉此回應
抱歉忘了說明,我要取得的OUTPUT是僅限於INSERT的affected rows數量,而UPDATE則不用
本篇文章回覆於2017-03-17 18:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

史努比
檢舉此回應
輸出參數的運作方式,可以稍作調整,不一定要用參數方式傳回來,你也可以用DataReader傳回所有參數

只要在預存程序的最後一行加一個



這樣就可以把所有要傳回的資料變成一筆記錄傳回來, 前端vb.net 執行命令, 不要使用ExecuteNonQuery,

可以改用ExecuteReader, 這樣處理回傳值可以更好用更方便。




至於80個變數的問題, 我覺得, 再多變數也不該使用組字串SQL 的方式來執行SQL 命令,

除了沒比較方便外, 還有可能被SQL Injection


本篇文章回覆於2017-03-18 14:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

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