This is how I approach him.
NOTE. I compiled this code, but I did not test it against the database, although I have a lot of similar code that works fine.
Also note: you are not getting the collection back, so you really should use OraCmd.ExecuteNonQuery, not OraCmd.ExecuteReader
using System.Configuration;
using System.Data;
using Oracle.DataAccess.Client;
namespace Testing
{
public class OracleCommandTest
{
string m_strConnectionsString = string.Empty;
public OracleCommandTest()
{
m_strConnectionsString = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
}
public void getData(string sNom, out string sValeur, out string sCommentaire, out string sRetour, out string sMsgRetour)
{
OracleConnection ora_conn = new OracleConnection(m_strConnectionsString);
try
{
ora_conn.Open();
OracleCommand ora_cmd = new OracleCommand("MYPKG.MYPROCEDURE", ora_conn);
ora_cmd.BindByName = true;
ora_cmd.CommandType = CommandType.StoredProcedure;
ora_cmd.Parameters.Add("sNom", OracleDbType.Varchar2, sNom, ParameterDirection.Input);
ora_cmd.Parameters.Add("sValeur", OracleDbType.Varchar2, ParameterDirection.Output);
ora_cmd.Parameters.Add("sCommentaire", OracleDbType.Varchar2, ParameterDirection.Output);
ora_cmd.Parameters.Add("sRetour", OracleDbType.Varchar2, ParameterDirection.Output);
ora_cmd.Parameters.Add("sMsgRetour", OracleDbType.Varchar2, ParameterDirection.Output);
ora_cmd.ExecuteNonQuery();
sValeur = ora_cmd.Parameters["sValeur"].Value.ToString();
sCommentaire = ora_cmd.Parameters["sCommentaire"].Value.ToString();
sRetour = ora_cmd.Parameters["sRetour"].Value.ToString();
sMsgRetour = ora_cmd.Parameters["sMsgRetour"].Value.ToString();
}
finally
{
if (ora_conn.State == ConnectionState.Open)
{
ora_conn.Close();
}
}
}
}
}
Hope this helps
Harvey Sater
source
share