我有一个存储过程,如下所示
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#代码,但我遇到了一些错误,比如在这个函数PortalListRepository.GetAll()中调用'PRC_ABCD_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;
}我对此非常陌生,我不知道如何解决it.Anybody是否知道我在C#代码、存储过程或包中做错了什么?请帮助我已经尝试了近3个星期,但没有运气:((
发布于 2018-01-05 18:43:27
我终于解决了这个错误,经过几周的努力,我终于解决了这个错误。我的错误是我在64位操作系统中安装了32位god.Why 12c,这就是为什么它无法加载oracle.data.accesss dll的程序集并抛出这些异常的原因。
解决方案:转到您的项目->属性->构建->任何cpu或64位我做了任何cpu它解决了我的问题。
有关更多详细信息,请访问此链接:
https://rambletech.wordpress.com/2011/09/26/could-not-load-file-or-assembly-oracle-dataaccess-error/
https://stackoverflow.com/questions/48058502
复制相似问题