Мы действительно заблудились, прочитав руководство для разработчиков ODP.NET 2 Day +, это не помогло.Я предоставил определение функции (хранится в пакете), я не понимаю, к чему мы должны привести набор данных или что передать функции.Вот определение функции:
FUNCTION ins (
rec_data IN OUT schema.table%ROWTYPE,
p_rowid OUT ROWID,
p_execution_ts IN schema.table.update_ts%TYPE)
RETURN NUMBER
Вот что мы сделали (что ничего не делает):
// inserts data
public void insertData(DataSet Data)
{
string connStr = "DATA SOURCE=someValidConnString";
OracleConnection conn = new OracleConnection(connStr);
string rowID = String.Empty;
Int32 rtnVal = 0;
try
{
conn.Open();
OracleCommand insCmd = new OracleCommand("PACKAGE.ins", conn);
insCmd.CommandType = CommandType.StoredProcedure;
OracleParameter outParam2 = new OracleParameter("retVal", OracleDbType.Varchar2, rtnVal,
ParameterDirection.ReturnValue);
insCmd.Parameters.Add(outParam2); //return value
OracleParameter inParam1 = new OracleParameter("rec_data", OracleDbType.NVarchar2, dsACCTData.Tables
[0].Rows[0], ParameterDirection.InputOutput);
OracleParameter outParam = new OracleParameter("p_rowid", OracleDbType.Varchar2, rowID,
ParameterDirection.Output);
OracleParameter inParam2 = new OracleParameter("p_execution_ts", OracleDbType.Date,
Oracle.DataAccess.Types.OracleDate.GetSysDate(), ParameterDirection.Input);
insCmd.Parameters.Add(inParam1); //first in out parameter
insCmd.Parameters.Add(outParam); //second out parameter
insCmd.Parameters.Add(inParam2); //third in parameter
insCmd.ExecuteNonQuery();
conn.Close();
}
catch (OracleException ee)
{
throw ee;
}
finally
{
conn.Dispose();
}
}
Я знаю, что это очень специфический вопрос, но я действительно потерян,Давайте предположим, что функция Oracle работает (работает), в этом случае мы просто не знаем, как правильно ее вызвать, используя ODP.NET
Большое спасибо за любую помощь.
edit:Вот сообщение об ошибке:
ORA-06550: строка 1, столбец 15: PLS-00306: неправильный номер или типы аргументов при вызове 'INS' ORA-06550: строка 1, столбец 7: PL /SQL: оператор игнорируется
С уважением, Fugu