A simple example on how to get Return and Out parameter values using Ado.Net
Another short one.
How to capture OUT and RETURN parameter values from a stored procedure in .Net.
Well, I’ll let the example speak for itself.
First create a stored procedure, this just take an in parameter and an out parameter, it declares a local variable that will be used as the return value.
create procedure ParamExample (@inParam int, @outParam int out)
as
begin
declare @retParam int
set @outParam = @inParam * 2
set @retParam = @inParam * 4
return @retParam
end
and test it:
declare @in int
declare @out int
declare @ret int
set @in = 100
set @out = 0
exec @ret = ParamExample @in, @out out
select @out as o, @ret as r
This should simply returns 200 for out parameter and 400 for the return.
Now, create a console application (C# in my case) replace the Main method with this.
I’ve used two approaches, one verbose and a shorter one, they both to the same thing however.
string cs = @"Data Source=.\sqlexpress;Initial Catalog=Repros;Integrated Security=SSPI";
string sql = "ParamExample";
try
{
// Verbose approach
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
// Create the command, setting the command text to be the stored procedure name
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
// Also need to specify that this is a stored procedure command (default is Text)
cmd.CommandType = System.Data.CommandType.StoredProcedure;
// Create the input paramenter, set the properites and add to command.
SqlParameter inParam = new SqlParameter();
inParam.SqlDbType = System.Data.SqlDbType.Int;
inParam.ParameterName = "@inParam";
inParam.Direction = System.Data.ParameterDirection.Input;
inParam.Value = 100;
cmd.Parameters.Add(inParam);
// Create the out paramenter, set the properites and add to command).
SqlParameter outParam = new SqlParameter();
outParam.SqlDbType = System.Data.SqlDbType.Int;
outParam.ParameterName = "@outParam";
outParam.Value = 100;
outParam.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(outParam);
// Create the return paramenter, set the properites and add to command).
SqlParameter retParam = new SqlParameter();
retParam.SqlDbType = System.Data.SqlDbType.Int;
retParam.ParameterName = "@retParam";
retParam.Direction = System.Data.ParameterDirection.ReturnValue;
cmd.Parameters.Add(retParam);
// Execute the command
cmd.ExecuteNonQuery();
// Get the values
int retval = (int)cmd.Parameters["@retParam"].Value;
int outval = (int)cmd.Parameters["@outParam"].Value;
Console.WriteLine("Return value: {0}, Out value: {1}", retval, outval);
// or get them directly from the parameter variable itself.
Console.WriteLine("Return value: {0}, Out value: {1}", retParam.Value, outParam.Value);
con.Close();
}
// Short approach
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
// Create the command, setting the command text to be the stored procedure name
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
// Create the input/output/return paramenter
cmd.Parameters.AddWithValue("@inParam", 100).Direction = System.Data.ParameterDirection.Input;
cmd.Parameters.Add("@outParam", System.Data.SqlDbType.Int).Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add("@retParam", System.Data.SqlDbType.Int).Direction = System.Data.ParameterDirection.ReturnValue;
// Execute the command
cmd.ExecuteNonQuery();
// Get the values
int retval = (int)cmd.Parameters["@retParam"].Value;
int outval = (int)cmd.Parameters["@outParam"].Value;
Console.WriteLine("Return value: {0}, Out value: {1}", retval, outval);
con.Close();
}
}
catch (SqlException se)
{
Console.WriteLine(se);
}
Simple as that J
Comments
Anonymous
May 07, 2009
PingBack from http://asp-net-hosting.simplynetdev.com/a-simple-example-on-how-to-get-return-and-out-parameter-values-using-adonet/Anonymous
May 11, 2014
Store Procedure with Parameters.. net-informations.com/.../cs-procedure-parameter.htm