your pl/sql block has an output binding parameter (:USER_ID1) , but you did not add any binding output parameters to objCmd
using (OracleConnection conn = new OracleConnection(_connectionString))
{
await conn.OpenAsync();
OracleCommand objCmd = new OracleCommand(sqlQuery, conn);
objCmd.CommandType = CommandType.Text;
OracleParameter param1 = objCmd.Parameters.Add("USER_ID1", OracleDbType.Number);
param1.Direction = ParameterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter(objCmd);
da.Fill(ds);
}
I realize you want a generic, so you will need to write a parser, that figures out the parameters names and whether they are an input or output. You will probably need to query the database to get the datatypes, or not allow parameter binding.