2013-12-18 170 views
1

我想從我的存儲過程中返回數據。這是我所嘗試過的,絕對沒有什麼會回來的。從存儲過程返回值

存儲過程:

Declare @Submit_ID as int 
Set @Submit_ID = (Select (Max(Sub_ID) + 1) from Sub_Details); 
INSERT INTO..... 
Return @Submit_ID 

C#(2.0)

SqlConnection conn = null; 
int subid; 
try 
{ 
    conn = new SqlConnection(conn_string); 
    SqlCommand cmd = new SqlCommand("INSERT_INTO_MYDB", conn); 
    cmd.CommandType = CommandType.StoredProcedure; 

    SqlParameter p1 = new SqlParameter("@FirstName", SqlDbType.NVarChar, 255); 
    p1.Direction = ParameterDirection.Input; 
    p1.Value = txtFirstName.Text; 
    cmd.Parameters.Add(p1); 

    SqlParameter p2 = new SqlParameter("@LastName", SqlDbType.NVarChar, 255); 
    p2.Direction = ParameterDirection.Input; 
    p2.Value = txtLastName.Text; 
    cmd.Parameters.Add(p2); 

    SqlParameter pSub = new SqlParameter("@Sub_ID", SqlDbType.Int); 
    pSub.Direction = ParameterDirection.ReturnValue; 

    conn.Open(); 
    cmd.ExecuteNonQuery(); 

    subid = Convert.ToInt32(pSub); 
} 
+1

問題是? – Tallmaris

回答

1

首先添加參數cmd和使用.Value來達到其值

4

你不添加返回參數的命令:

SqlParameter pSub = new SqlParameter("@Sub_ID", SqlDbType.Int); 
pSub.Direction = ParameterDirection.ReturnValue; 

cmd.Parameters.Add(pSub); // <------------- add to command 

conn.Open(); 
cmd.ExecuteNonQuery(); 

subid = Convert.ToInt32(cmd.Parameters["pSub"].Value); 
+3

此外,你想使用pSub.Value我相信 –

+0

@DarrenKopp良好的捕獲 –

+0

我相信該參數的名稱也必須匹配'@Submit_ID!= @ Sub_ID' – Jason