首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-06550存储过程错误

ORA-06550存储过程错误
EN

Stack Overflow用户
提问于 2018-01-02 17:32:48
回答 1查看 762关注 0票数 0

我有一个存储过程,如下所示

代码语言:javascript
复制
PROCEDURE PRC_ABCD_GETALL (resultset_out OUT TYPES.cursorType)
AS
BEGIN
OPEN 
resultset_out FOR SELECT * FROM ABCD;
END PRC_ABCD_GETALL;

这个过程在包中,包是这样的

代码语言:javascript
复制
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,前面的代码如下所示

代码语言:javascript
复制
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‘时出现了错误的参数数量或类型;

代码语言:javascript
复制
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#代码

代码语言:javascript
复制
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个星期,但没有运气:((

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48058502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档