2010-08-08 78 views
20

我有一個輸出參數的存儲過程。如何使用C#代碼讀取此值?如何運行C#中有OUTPUT參數的存儲過程?

+0

請郵寄到現在爲止您編寫的代碼。 – 2010-08-08 09:02:22

+1

我喜歡這個,因爲這是一個有用的問題,但由於缺乏「我試過這個」我不能這樣做。 – JYelton 2013-09-16 17:37:40

回答

40

我假設你使用ADO.NET?如果是這樣,SqlParameter類具有屬性「方向」。將方向設置爲輸出,並在查詢執行後讀取該參數的值。

事情是這樣的:

using (SqlCommand cmd = new SqlCommand("MyStoredProcedure", cn)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    SqlParameter parm = new SqlParameter("@pkid", SqlDbType.Int); 
    parm.Value = 1; 
    parm.Direction = ParameterDirection.Input; 
    cmd.Parameters.Add(parm); 

    SqlParameter parm2 = new SqlParameter("@ProductName", SqlDbType.VarChar); 
    parm2.Size = 50; 
    parm2.Direction = ParameterDirection.Output; // This is important! 
    cmd.Parameters.Add(parm2); 

    cn.Open(); 
    cmd.ExecuteNonQuery(); 
    cn.Close(); 
} 
+0

我有另一個問題,我需要確定輸出參數 是十進制(8,2)如何! – shmandor 2010-08-08 09:37:09

+0

我不確定我是否理解這個問題。如果您要在輸出變量中返回一個小數,您應該將SqlDbType設置爲十進制。如果你實際上返回一個十進制數,你可以像這樣進行轉換:(十進制)cmd.Parameters [@「MyDecimal」] Value – Merrimack 2010-08-08 09:46:31

+6

我強烈建議將'SqlConnection'和'SqlCommand'放入'using(.... ){...}'塊作爲最佳實踐 – 2010-08-08 09:50:49