Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Fri Nov 27 15:14:53 CST 2009
Hi John -
Here is a sample for you:
public static void TestSP()
{
string connectionString = "{{Your connection string here}}";
//CREATE Procedure [dbo].[TestParams]
// @Username varchar(20),
// @ErrorDesc varchar(100) output,
// @ErrorNo int output,
// @RowsAffected int output AS
//DECLARE @lErrorNo INTEGER
//DECLARE @lRowsAffected INTEGER
//Begin
// set @ErrorDesc = 'SUCCESS' + ', UserName = ' + IsNull(@USerName,'?')
// set @ErrorNo = 1 -- OK
// set @RowsAffected = 503
// RETURN 1234
//end
try
{
using (SqlConnection connection = new
SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("TestParams", connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
// @Username varchar(20),
command.Parameters.Add(
new SqlParameter("@Username", System.Data.SqlDbType.VarChar,
20));
command.Parameters["@UserName"].Value = "SP_PARAMS_TEST";
// @ErrorDesc varchar(100) output,
command.Parameters.Add(
new SqlParameter("@ErrorDesc",
System.Data.SqlDbType.VarChar, 100));
command.Parameters["@ErrorDesc"].Direction =
System.Data.ParameterDirection.Output;
// @ErrorNo int output,
command.Parameters.Add(
new SqlParameter("@ErrorNo", System.Data.SqlDbType.Int, 4));
command.Parameters["@ErrorNo"].Direction =
System.Data.ParameterDirection.Output;
// @RowsAffected int output AS
command.Parameters.Add(
new SqlParameter("@RowsAffected", System.Data.SqlDbType.Int,
4));
command.Parameters["@RowsAffected"].Direction =
System.Data.ParameterDirection.Output;
// RETURN
command.Parameters.Add(
new SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int,
4));
command.Parameters["@RETURN_VALUE"].Direction =
System.Data.ParameterDirection.ReturnValue;
int retValue = command.ExecuteNonQuery();
Console.WriteLine(
"retValue = {0}\n" +
"@RETURN_VALUE = {1}\n" +
"@ErrorDesc = '{2}'\n" +
"@ErrorNo = {3}\n" +
"@RowsAffected = {4}"
,
retValue,
command.Parameters["@RETURN_VALUE"].Value.ToString(),
command.Parameters["@ErrorDesc"].Value.ToString(),
command.Parameters["@ErrorNo"].Value.ToString(),
command.Parameters["@RowsAffected"].Value.ToString()
);
}
}
catch (SqlException ex)
{
Console.WriteLine("T-SQL: {0}", ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("{0}", ex.Message);
}
}
Result:
retValue = -1
@RETURN_VALUE = 1234
@ErrorDesc = 'SUCCESS, UserName = SP_PARAMS_TEST'
@ErrorNo = 1
@RowsAffected = 503
--
Shamil