對於是否可以完成某些操作,以及它是否是最有效的方法,我有一個普遍的問題!將對象集合作爲參數傳遞到SQL Server存儲過程
總結:可以將對象集合作爲參數傳遞給存儲過程嗎?
比方說,我有一個SQL Server表稱爲Users [UserID, Forename, Surname]
和另一個表稱爲Hobbies [HobbyID, UserID, HobbyName, HobbyTypeID]
此設置是打擊用戶記錄多個愛好。
在我的應用程序中,我想更新用戶記錄。
通常情況下 - 我會更新用戶表,然後在代碼中循環遍歷每個愛好並通過記錄更新愛好表記錄。
如果我正在更新用戶名和他們的愛好2,這將需要3次調用數據庫。
(1調用存儲過程來更新用的名字/姓氏和2個調用存儲過程來更新2嗜好記錄)
我的問題是:
我可以做只是1調用數據庫通過將所有參數傳遞給1個存儲過程。
例如。
intUserID = 1
strForename = "Edward"
strSurname = "ScissorHands"
dim objHobbyCollection as New List(Of Hobby)
'Assume that I have 2 hobby objects, each with their hobbyID, UserID, HobbyName & HobbyTypeID
Dim params As SqlParameter()
params = New SqlParameter() {
New SqlParameter("@UserID", intUserID),
New SqlParameter("@Forename", strForename),
New SqlParameter("@Surname", strSurname),
New SqlParameter("@Hobbies", objHobbyCollection)
}
我可以這樣做嗎? (哪種方式會更有效?) 存儲過程的外觀如何?
ALTER PROCEDURE [dbo].[User_Update]
@UserID INT
,@Forename NVARCHAR(50) = NULL
,@Surname NVARCHAR(50) = NULL
,@Hobbies ??????????????
你正在使用什麼版本的SQL Server? – 2012-07-11 20:24:06
SQL Server 2008 R2 – wotney 2012-07-12 16:36:26