Oracle Out Parameter VARCHAR2 Stored Procedure is translated into Char

Oracle Out Parameter VARCHAR2 Stored Procedure is translated into Char

  

Hi , i tried to create extension using C# to call store procedure in oracle that has the signature: 

[ORACLE STORE PROCEDURE]

PROCEDURE login (userid IN VARCHAR2, pwd IN VARCHAR2, outmsg OUT  VARCHAR2, P_RET OUT NUMBER)


[C# extension]

and in the C# the procedure is like this:

public void Mssexecsp(string ssinp1, string ssinp2, out string ssoutp1, out decimal ssoutp2) {
...

var vssoutp1 = cmd.CreateParameter("outmsg", DbType.String, DBNull.Value);
                    var vssoutp2 = cmd.CreateParameter("p_ret", DbType.Decimal, DBNull.Value);
                   
                    // Set parameter direction on ADO.NET Data Parameter
                    // The driver will fill the output parameter with a value after the query executes
                    vssoutp1.GetDriverParameter().Direction = ParameterDirection.Output;
                    vssoutp2.GetDriverParameter().Direction = ParameterDirection.Output;

                    // Call the store procedure
                    cmd.ExecuteNonQuery();

                   
                    ssoutp1 = (string)vssoutp1.Value;
                    ssoutp2 = (decimal)vssoutp2.Value;


When i  run the code in outsystems there is an error whenever i assign the outmsg out parameter  with more than one character. How to solve this? thank you.