2009-10-15 84 views
1

我在執行存儲過程時遇到問題...這個自動生成的t-sql查詢有什麼問題?

我有試圖調用存儲過程的C#代碼。它看起來有點像這樣:

DataTable myDataTable = new DataTable(); 
using (SqlConnection connection = new SqlConnection(myConnectionString)) 
{ 
    SqlCommand selectCommand = new SqlCommand("MyStoredProc", connection); 
    selectCommand.Parameters.Add(new SqlParameter("@myGuid", myGuid)); 
    SqlDataAdapter da = new SqlDataAdapter(selectCommand); 
    da.Fill(myDataTable); 
} 

當我執行它,我收到寫着「附近有語法錯誤MyStoredProc'」的錯誤。

如果我跑SqlProfiler,我看到它試圖運行我的存儲過程是這樣的:

exec sp_executesql 
N'MyStoredProc', 
N'@myGuid uniqueidentifier', 
@myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF' 

果然,如果我嘗試做同樣的事情,我得到了同樣的錯誤。所以我的問題是:

  1. 生成的查詢有什麼問題?
  2. 爲什麼C#生成無效查詢?我在C#代碼中做錯了什麼?

編輯: Agent_9191釘它...我愚蠢地留出到的SelectCommand類型設置爲StoredProcedure的聲明。新產生的查詢是:

exec MyStoredProc @myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF' 

這(當然)工作正常。

+0

請顯示發生錯誤的實際存儲過程。我的直覺是,SQL有問題,而不是C#代碼。 – 2009-10-15 20:52:43

+0

@Josh:不......它不是......我可以用任何隨機字符串(不存在的存儲過程)替換「MyStoredProc」,我仍然會得到錯誤...這真的是一個語法錯誤電話。 – Beska 2009-10-15 20:57:13

回答

7

請務必設置您的selectCommand.CommandType = CommandType.StoredProcedure

+0

噢,我的天啊......對我而言,這是一件非常愚蠢的事...... – Beska 2009-10-15 20:52:31

+0

發生在我們身上:) – 2009-10-15 21:02:30