1. 程式人生 > >如何使用儲存過程output引數

如何使用儲存過程output引數

儲存過程程式碼如下:

  1. ALTER PROCEDURE dbo.testOutput  
  2.     (
  3.     @p1 int ,
  4.     @p2 int OUTPUT,
  5.     @p3 int
  6.     )   
  7. AS
  8. /* SET NOCOUNT ON */
  9.     select @p2 = count(*) from testProc where testid between @p1 and @p3
  10.     RETURN @@rowcount

這個儲存過程返回2個值,一個是output型引數@p2,另外一個是資料庫自帶的return值 @@rowcount(語句所影響的行數)。

C#程式:

  1.             SqlCommand com = 
    new SqlCommand("testOutput",con);
  2.             com.CommandType = CommandType.StoredProcedure;
  3.             SqlParameter p1 = new SqlParameter("@p1",SqlDbType.Int);
  4.             SqlParameter p2 = new SqlParameter("@p2",SqlDbType.Int);
  5.             SqlParameter p3 = new SqlParameter("@p3",SqlDbType.Int);
  6.             SqlParameter rowcount = 
    new SqlParameter("@@rowcount", SqlDbType.Int);   
  7.             p1.Value = int.Parse(textBox2.Text);
  8.             p2.Direction = ParameterDirection.Output; //把p2設定為output型引數
  9.             p3.Value = int.Parse(textBox3.Text);
  10.             rowcount.Direction = ParameterDirection.ReturnValue;//把rowcount類////型設定為returnvalue型
  11.             com.Parameters.Add(p1);
  12.             com.Parameters.Add(p2); 
  13.             com.Parameters.Add(p3);
  14.             com.Parameters.Add(rowcount);
  15.             com.ExecuteNonQuery();
  16.             MessageBox.Show(p2.Value.ToString());  //執行過儲存過程以後,output引數p2和@@rowcount就自動返回了值。
  17.             MessageBox.Show(rowcount.Value.ToString());