jwcolby
jwcolby at colbyconsulting.com
Fri Nov 27 21:15:28 CST 2009
Hi Shamil, I assume that the parameters on the C# side have to be in the same order / name / datatype / size as the parameters in the stored procedure? John W. Colby www.ColbyConsulting.com Shamil Salakhetdinov wrote: > 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 > > _______________________________________________ > dba-VB mailing list > dba-VB at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/dba-vb > http://www.databaseadvisors.com > >