我如何读取SP返回的值

时间:2012-04-20 10:02:55

标签: c# sql

在我的一个项目中我必须使用C#读取TextBox中以下过程返回的值。

任何人都可以编写代码来读取使用c#??

后续程序返回的TextBox中的@a
create procedure [dbo].[Test]    
as    
declare    
@a numeric(5)    
begin    
set @a = (select COUNT(*) from Emp);    
return @a   
end 

我试过这个

SqlConnection cn = new SqlConnection("data source=localhost;initial catalog=acc;uid=sa;pwd=fantastic");
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Test";
Int32 i = Convert.ToInt32(cmd.ExecuteScalar());
textBox1.Text = i.ToString();

2 个答案:

答案 0 :(得分:2)

- 部分复制粘贴,其中大部分是从头部开始,但尝试一下:

SqlConnection con = new SqlConnection(connectionstring);
SqlCommand com = new SqlCommand("test", con);
com.CommandType = CommandType.StoredProcedure;
SqlParamter returnVal = new SqlParameter("RETURN_VALUE", SqlDbType.Int);
returnVal.Direction = ParameterDirection.ReturnValue;
com.Parameters.Add(returnVal);
com.Connection.Open();
com.ExecuteNonQuery();
int A = returnVal.value;
con.Close();

ExecuteScalar:“执行查询,并返回查询返回的结果集中第一行的第一列。” 你要返回一个返回值,而不是一个字段。如果要使用标量,则需要编辑存储过程以实际返回如下字段:

create procedure [dbo].[Test] 
as 
begin 

select (select COUNT(*) from Emp)

end  

答案 1 :(得分:1)

您可以使用返回参数(请参阅answer of riffnl)或将sp中的“return”更改为“select”。

ExecuteScalar不会捕获返回值,只捕获第一个select ed值。