2017-10-12 99 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