[dba-VB] Calling SP with params from C# sample

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




More information about the dba-VB mailing list