我有这样的商店程序
PROCEDURE PRC_ABCD_GETALL (resultset_out OUT TYPES.cursorType)
AS
BEGIN
OPEN
resultset_out FOR SELECT * FROM ABCD;
END PRC_ABCD_GETALL;
并且此程序在包中,包就像这样
create or replace
PACKAGE V4_EVT_PKG_ABCD_GENERAL
AS
PROCEDURE PRC_ABCD_GETALL (resultset_out OUT TYPES.cursorType);
END V4_EVT_PKG_ABCD_GENERAL;
,oracle数据提供程序是system.data.oracleClient,前面的代码是这个
public static IEnumerable<PortalList> GetAll()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand objComm = db.GetStoredProcCommand("package_name.sp", new
object[1]);
var result = new List<PortalList>();
using (IDataReader rdr = db.ExecuteReader(objComm))
{
while (rdr.Read())
{
result.Add(Construct(rdr));
}
}
return result;
}
现在我发现system.data.oracleClient已被删除,我想使用Oracle.DataAccess.Client作为数据提供者我为此编写了C#代码但是我遇到了一些错误,例如调用中的错误数量或参数类型到&#39; PRC_ABCD_GETALL&#39;在此函数中PortalListRepository.GetAll();
private static IEnumerable<PortalList> GetAll(bool forceDataReload)
{
const string cacheKey = "PortalListService_GetAll";
IEnumerable<PortalList> result = null;
if (!forceDataReload)
result = GetFromCache(cacheKey);
if (result == null)
{
result = PortalListRepository.GetAll();
AddToCache(cacheKey, result);
}
return result;
}
我无法解决。
C#代码
public static IEnumerable<PortalList> GetAll()
{
string cnn = "connectionstring";
var result = new List<PortalList>();
using (OracleConnection conn = new OracleConnection(cnn))
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "PRC_ABCD_GETALL";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("resultset_out", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
OracleDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
result.Add(Construct(rdr));
}
}
return result;
}
我对此非常陌生,我不知道如何解决它。任何人都知道我在C#代码或我的商店程序或我的包裹中做错了什么?请帮助我尝试了将近3周,但没有运气:((
答案 0 :(得分:1)
最后,经过几个星期哦,上帝把我的头撞到了墙上几周之后,我解决了这个错误。为什么我遇到这个错误是我在我的64位操作系统中安装了32位oracle 12c这就是为什么它无法加载oracle的程序集.data.accesss dll和它会抛出这些异常。
Sollution: 转到你的项目 - &gt; property-&gt; built-&gt;任何cpu或64bit我做了任何cpu它解决了我的问题。
有关详细信息,请访问以下链接:
https://rambletech.wordpress.com/2011/09/26/could-not-load-file-or-assembly-oracle-dataaccess-error/