2017-10-12 81 views
2

我正在创建一个ASP.NET MVC应用程序,并且正在使用企业库连接到我的Oracle数据库。用企业库调用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

你尝试:SP_NAME = “package_name.Get_Data”; ? –

+0

谢谢...还有一个问题..我如何定义游标类型的AddOutParameter ?. – Diego

+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); 
+0

谢谢,我有一个新的错误,我在另一篇文章中发布。 – Diego