Oracle procedure call from vb.net code is working fine if I use "Microsoft.Practices.EnterpriseLibrary.Data" dll. Rewriting same procedure call using "Oracle.ManagedDataAccess.dll" giving error. What am I doing wrong - Error message : ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Code using- Microsoft.Practices.EnterpriseLibrary.Data:
Dim db As Database = GetDatabase("connection string")
Dim dbCommand As DbCommand
dbCommand = db.GetStoredProcCommand("procedurename")
db.AddInParameter(dbCommand, "piv_userid", DbType.String, strUserID)
db.AddInParameter(dbCommand, "piv_userpwd", DbType.String, strPassword)
db.AddInParameter(dbCommand, "piv_appstub", DbType.String, My.Application.Info.ProductName)
db.AddOutParameter(dbCommand, "pon_error_no", DbType.Decimal, 10)
db.AddOutParameter(dbCommand, "pov_error_msg", DbType.String, 400)
db.AddOutParameter(dbCommand, "pov_applist", DbType.String, 100)
db.ExecuteNonQuery(dbCommand)
code using - OracleManagedDataAccess.dll
Dim conn As New OracleConnection("connection string")
Dim cmd As New OracleCommand("procedurename", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("piv_userid", OracleDbType.Varchar2, ParameterDirection.Input).Value = strUserID
cmd.Parameters.Add("piv_userpwd", OracleDbType.Varchar2, ParameterDirection.Input).Value = strPassword
cmd.Parameters.Add("piv_appstub", OracleDbType.Varchar2, ParameterDirection.Input).Value = My.Application.Info.ProductName
cmd.Parameters.Add("pon_error_no", OracleDbType.Decimal, 10, ParameterDirection.Output)
cmd.Parameters.Add("pov_error_msg", OracleDbType.Varchar2, 400, ParameterDirection.Output)
cmd.Parameters.Add("pov_applist", OracleDbType.Varchar2, 100, ParameterDirection.Output)
cmd.ExecuteNonQuery()
Error message : ORA-06502: PL/SQL: numeric or value error: character string buffer too small
For output parameter I always use this: