我在Oracle 11g的一個包如下:如何使用實體框架在Oracle包內調用存儲過程?
CREATE OR REPLACE PACKAGE "HRS.PKG_TRAINING_SP" as
TYPE T_CURSOR IS REF CURSOR;
procedure GETPERSONNELTRAINIGLIST(
personnel_Id_in in string,
base_date_in in string,
is_current_in in number,
lst OUT T_CURSOR);
end;
我如何可以執行上述步驟包(GETPERSONNELTRAINIGLIST
)與實體框架(代碼優先)?
說明:我對Oracle使用Entity Framwork 6.0(代碼優先)和devart EF Provider
。
更新時間: 我使用下面的代碼:
var param1 = new OracleParameter("personnel_Id_in", OracleDbType.VarChar, "c5eb5589-8fee-47b6-85ad-261a0307cc16", ParameterDirection.Input);
var param2 = new OracleParameter("base_date_in", OracleDbType.VarChar, "1112", ParameterDirection.Input);
var param3 = new OracleParameter("is_current_in", OracleDbType.Number, 1, ParameterDirection.Input);
var ATests =
db.Database.SqlQuery<ATest>(
"BEGIN PKG_TRAINING_SP.GETPERSONNELTRAINIGLIST(:personnel_Id_in, :base_date_in, :is_current_in); end;",
param1, param2, param3).ToList();
但低於錯誤提出:
{"ORA-06550: line 1, column 7:\nPLS-00306: wrong number or types of arguments in call to 'GETPERSONNELTRAINIGLIST'\nORA-06550: line 1, column 7:\nPL/SQL: Statement ignored"}
它的功能就像一個魅力。 – Amir
執行包中所有程序的最佳做法是什麼? – Amir
使用Code-First方法時,使用上述方法(通過SqlQuery方法http://msdn.microsoft.com/en-us/library/gg679117%28v=vs.103%29.aspx),是最合適的。 有關使用存儲過程創建EF模型並使用它們的一般信息,請參閱此處 http://www.devart.com/dotconnect/oracle/docs/?OracleRoutines.html – Devart