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関数insが機能すると仮定しましょう(機能します)。この場合、ODP.NETを使用して正しく呼び出す方法がわかりません。
助けてくれてありがとう。
編集:ここにエラーメッセージがあります:
ORA-06550:行1、列15:PLS-00306:'INS'の呼び出しで引数の数またはタイプが正しくありませんORA-06550:行1、列7:PL / SQL:文が無視されました
よろしく、フグ