Я унаследовал функцию в приложении ASP.NET (C #), где автор использовал Microsoft.Practices.EnterpriseLibrary.Data library
, но меня попросили изменить его, чтобы он использовал System.Data.OracleClient
. Эта функция использует хранимую процедуру из базы данных. itemName
и openDate
- строковые параметры, которые принимает функция. PKG_AUCTION_ITEMS.IsAuctionItem
- имя функции хранимой процедуры.
Вот код, который я получил:
string result = String.Empty;
Database db = DatabaseFactory.CreateDatabase("OraData");
using (DbCommand cmdDB = db.GetStoredProcCommand("PKG_AUCTION_ITEMS.IsAuctionItem"))
{
db.AddInParameter(cmdDB, "vItemName", DbType.String, itemName);
db.AddInParameter(cmdDB, "vOpenDate", DbType.String, openDate);
db.AddParameter(cmdDB, "ret", DbType.String, 2, ParameterDirection.ReturnValue, false, 0, 0, null, DataRowVersion.Current, null);
db.ExecuteNonQuery(cmdDB);
result = cmdDB.Parameters["ret"].Value.ToString();
}
Вот мой код: (connstr
строка подключения)
string result = String.Empty;
OracleConnection conn = new OracleConnection(connstr);
OracleCommand cmd = new OracleCommand("PKG_AUCTION_ITEMS.IsAuctionItem",conn);
myCmd.CommandType = CommandType.StoredProcedure;
using (myCmd)
{
myCmd.Parameters.AddWithValue("vItemName", itemName);
myCmd.Parameters.AddWithValue("vOpenDate", openDate);
myCmd.Parameters.AddWithValue("ret", ???);
myCmd.ExecuteNonQuery();
result = myCmd.Parameters["ret"].Value.ToString();
}
Я не понимаю, в чем разница между AddInParameter и AddParameter и что делает эта строка:
db.AddParameter(cmdDB, "ret", DbType.String, 2, ParameterDirection.ReturnValue, false, 0, 0, null, DataRowVersion.Current, null);
Я на правильном пути? Может кто-нибудь, пожалуйста, помогите?
Спасибо