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

时间:2017-10-12 12:05:09

标签: c# oracle enterprise-library

我正在创建一个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的问题是存储过程嵌入在包和包体中。

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

由于

1 个答案:

答案 0 :(得分: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);