【问题标题】:Call Oracle Stored Procedure and Package with Enterprise Library使用企业库调用 Oracle 存储过程和包
【发布时间】:2017-10-12 12:05:08
【问题描述】:

我正在创建一个 ASP.NET MVC 应用程序,并且我正在使用 Enterprise Library 连接到我的 Oracle 数据库。

我以前一直用SQL Server,以前是这样叫的。

Database db = readConfig.ReadWebConfig();
SP_NAME = "Get_Data";

using (DbCommand dbCommand = db.GetStoredProcCommand(SP_NAME))
{
    //Pass parameters
    dbCommand.Parameters.Clear();
    db.AddInParameter(dbCommand, "CommParent_ID", DbType.Int32, comment.CommParent_id);
    db.AddInParameter(dbCommand, "Type_ID", DbType.Int32, comment.Type_id);

    IRowMapper<CommentEntity> resmapper = MapBuilder<CommentEntity>.MapAllProperties()
                                                  .Map(x => x.UserEmail).ToColumn("Email")
                                                  .Map(x => x.Nick).ToColumn("FullName")
                                                  .Map(x => x.User_id).ToColumn("User_ID")
                                                  .Map(x => x.Comment_id).ToColumn("Comment_ID")
                                                  .Build();

    List<CommentEntity> result = db.ExecuteSprocAccessor<CommentEntity>(SP_NAME, resmapper, dbCommand.Parameters).ToList<CommentEntity>();
}

我使用Oracle遇到的问题是存储过程嵌入在包和包体中。

我的问题是,我如何在通话中设置包名。

谢谢

【问题讨论】:

  • 你试过了吗:SP_NAME = "package_name.Get_Data"; ?
  • 谢谢...还有一个问题..如何为光标类型定义 AddOutParameter?。
  • 在下面查看我的答案。

标签: c# oracle enterprise-library


【解决方案1】:

将您的存储过程名称更改为:

SP_NAME = "package_name.Get_Data";

要添加 SYS_REFCURSOR 输出参数,请使用:

OracleParameter oraP = new OracleParameter();
oraP.OracleDbType = OracleDbType.RefCursor;
oraP.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(oraP);

【讨论】:

  • 谢谢,我有一个新错误,我将在另一篇文章中发布。
猜你喜欢
  • 1970-01-01
  • 2012-02-25
  • 2013-05-21
  • 2010-10-16
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多