我在調用具有3個OUTPUT參數的SQL過程。在調用proc之後,其他兩個參數中的一個不會返回值。 Profiler顯示所有3個值都被返回。未從存儲過程返回輸出參數
的PARAMS被聲明爲在proc如下...
@UsrVariableID INT OUTPUT,
@OrganisationName NVARCHAR(256) OUTPUT,
@Visible bit OUTPUT
,並調用PROC是這樣的代碼...
cm.Parameters.AddWithValue("@OrganisationName", name);
cm.Parameters["@OrganisationName"].Direction = ParameterDirection.Output;
cm.Parameters.AddWithValue("@Visible", visible);
cm.Parameters["@Visible"].Direction = ParameterDirection.Output;
cm.ExecuteNonQuery();
name = cm.Parameters["@OrganisationName"].Value.ToString();
visible = bool.Parse(cm.Parameters["@Visible"].Value.ToString());
id = int.Parse(cm.Parameters["@UsrVariableID"].Value.ToString());
失敗的參數是@OrganisationName 。
我想知道它是否是因爲param是代碼中的類型字符串,但proc中是NVARCHAR。
任何人有什麼想法?
當你說失敗,它是否在tostring()轉換上拋出一個錯誤還是它沒有返回任何數據? 當你在SSMS中執行它時,該存儲過程是否會返回沒有錯誤? – 2008-10-29 17:49:46
也許錯誤在於程序本身;實際上是否存在過程中的「SELECT @OrganisationName = something」或「SET @OrganisationName = something」? – configurator 2008-10-29 18:06:41