Question : SQL in C# code .. Reading Output Parameters.

I got it so close I can almost taste victory. But alas, foiled again.

I put in code to read a SQL Stored procedure with and output parameter.

The output parameter is set ok in the Stored Procedure.

I know I am getting the info to return because I get the first character of the entry in the field. If the message is empty it returns the field empty if it is set to  something like "Can't Add..." I get back "C"... That's it..  One lousy character! What the ????????

I added an image of the results of running the Stored Procedure in SQL..

here is my C# code

            cmd = new SqlCommand("ULInsideRepMaint", SQLServer_Conn.Connection);
            //if want to read output parm when return, make sure you intialize it in SP!
            //Then set the direction to output.
            cmd.Parameters.AddWithValue("@SPMessage", "");
            cmd.Parameters["@SPMessage"].Direction = ParameterDirection.Output;
            cmd.Parameters.AddWithValue("@Process", pbl.pblStringVar1);
            cmd.Parameters.AddWithValue("@RepNo", pbl.pblstrRepNo);

            cmd.CommandType = CommandType.StoredProcedure;
            try
            {
                SQLServer_Conn.Open();
                cmd.ExecuteNonQuery();
                SQLServer_Conn.Close();
                //See if we have an error message or if it is empty..
                lblMessage.Text = (string)cmd.Parameters["@SpMessage"].Value;
            }
            catch (SqlException exc)
            {

                lblMessage.Text = exc.Message;
            }
            finally
            {
                pbl.pblStringVar1 = string.Empty;
            }
        }

here is my SqL Code..
ALTER Procedure [dbo].[ULInsideRepMaint]
            @SPMessage CHAR (100) OUTPUT,
            @Process Char (1),
            @RepNo Char(5)
AS

declare @reccount2 as int;
--since reading this in C# code, need to set it.
set @SpMessage = '';

--- Check if valid process (can not add if already added or if not in VD SalesRep to add, can't delete if not there)

set @reccount2 = (select count(Salesperson) from SSIS_VD.SSIS.ULarSalesperson where @repno = Salesperson)

-- Cannot add Rep if not in VD SalesRep Table to begin with!
If @Process = 'A' and @reccount2 = 0
  Begin
         set @SpMessage = 'Cannot Add Rep, Rep # is not in VD SalesRep Table';
         Return
  end;
Attachments:
 
Results Running in SQL
Results Running in SQL
 

Answer : SQL in C# code .. Reading Output Parameters.

hi
when u write
 cmd.Parameters.AddWithValue("@SPMessage", "");
then length of @SPMessage set to char(1) but then sp parameter is char(100) in casting (in C# code in return) the the @SPMessage is truncated
Random Solutions  
 
programming4us programming4us