使用企业库调用 Oracle 存储过程和包

Call Oracle Stored Procedure and Package with Enterprise Library

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

我以前一直用SQLServer,以前也是这么叫的

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";

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

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