[英]How to wait for a database command to complete one iteration before continuing in foreach loop
我想知道如何在每個循環的下一個迭代之前等待數據庫命令完成。
以下代碼幾乎將所有SQL語句“ EXEC ups_StoredProc”一起發送,而無需等待下一個語句完成:
foreach (var guid in anUserIDList)
{
Database.ExecuteCmd(string.Format("EXEC dbo.usp_StoredProc @MemberContactID = '{0}'", guid), con);
}
我試圖獲取存儲在變量中的proc的結果,但是即使命令尚未完成,它也會返回0。
int result = Database.ExecuteCmd(string.Format("EXEC dbo.usp_StoredProc @MemberContactID = '{0}'", guid), con);
謝謝
您必須查看該呼叫的文檔。
從您的評論中,我看到方法簽名是:
public static int ExecuteCmd(string SQLCommand, IDbConnection con, params DBParam[] Params);
根據我的經驗,我很可能會猜測這已經是一個阻塞調用,並且它會返回受影響的行數。 如果是這樣,您所擁有的應該可以工作。
是什么讓您認為存儲過程應該返回0
以外的0
? 您確定這有效嗎?
如您所建議,如果這是一個非阻塞調用,那么您可能無能為力。 除非返回的整數引用某些可連接的任務,否則它可能會“丟失”。 但是,那將是一個糟糕的設計決定,所以我確實對此表示懷疑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.