简体   繁体   English

从存储过程返回值

[英]Return Value from a Stored Procedure

I am trying to get data returned from my stored procedure. 我正在尝试从存储过程中返回数据。 This is what I have tried and absolutely nothing is coming back. 这是我尝试过的,绝对没有回来。

Stored Proc: 存储过程:

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

C# (2.0) 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);
}

You're not adding the return parameter to the command: 您没有在命令中添加return参数:

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);

First add parameter to cmd and use .Value to its value 首先将参数添加到cmd并使用.Value作为其值

 cmd.Parameters.Add(pSub);    // add parameters to command
 cmd.ExecuteNonQuery();
 subid = Convert.ToInt32(pSub.Value); // Use .Value

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM