Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Why only one character is returned?
Message
From
26/05/2012 03:50:21
 
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
C# 2.0
Miscellaneous
Thread ID:
01544467
Message ID:
01544495
Views:
29
>Hi,
>
>This is a continuation of the thread where I am trying to get the value of OUTPUT parameter when calling a stored procedure. The stored procedure is very simple and has one OUTPUT parameter where the value is set to something like 'ABCD' (I tried, '1234', and so on).
>
>The problem is that the code below, when gets the value of parameter only shows 1 character. E.g. 'A' or '1', and so on.
>
>Here is the summary of the code (basically copy of what Viv suggested in the other thread):
>
> System.Data.Common.DbCommand command = new SqlCommand();
> System.Data.IDbDataParameter p = command.CreateParameter();
> p.ParameterName = "@Param3";
> p.Direction = ParameterDirection.Output;
> p.Value = cVal3;
> command.Parameters.Add(p);
>int RetValue = command.ExecuteNonQuery()
> var v = command.Parameters["@Param3"].Value;
>// the value 'v' has 'A' or '1' but never the entire string
>
>
>Do you see where could be the problem? TIA.

You missed out the most important line. Snip:
p.Direction = ParameterDirection.Output;
//etc  <------- This one :-}
p.Value = cVal3;
I think you have this working now anyway but here's a complete example. Given
CREATE PROCEDURE [dbo].[MyProc]
   @Param3  nvarchar(30) OUT
AS
BEGIN
   SET @Param3 = 'Hello ' + @Param3
   RETURN
END
Then
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = s;
            conn.Open();

            System.Data.Common.DbCommand command = new SqlCommand();
            System.Data.IDbDataParameter p = command.CreateParameter();

            p.ParameterName = "@Param3";
            p.Direction = ParameterDirection.InputOutput;
            p.Value = "World";
            p.DbType = System.Data.DbType.String;
            p.Size = 30;
            command.Parameters.Add(p);

            command.Connection = conn;
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = "MyProc";
            command.ExecuteNonQuery();
            string result = (string) command.Parameters["@Param3"].Value;
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform