Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
首先使用实体框架代码和DevArt驱动程序调用Oracle存储过程_Oracle_Entity Framework_Stored Procedures_Entity Framework 6_Devart - Fatal编程技术网

首先使用实体框架代码和DevArt驱动程序调用Oracle存储过程

首先使用实体框架代码和DevArt驱动程序调用Oracle存储过程,oracle,entity-framework,stored-procedures,entity-framework-6,devart,Oracle,Entity Framework,Stored Procedures,Entity Framework 6,Devart,我有一个Oracle存储过程,我正试图首先使用EF代码(DbContext)使用DevArt Oracle驱动程序(最新版本)调用它。我不知道为什么这么难(我希望我使用的是SQL Server),但我无法让它工作。我正在做中描述的事情 我遵循了DevArt团队自己提供的答案,但仍然得到一个Oracle例外,尽管略有不同: ora-01036非法变量名称/编号 这是我的存储过程的签名: create or replace PROCEDURE GP_PARTICIPANTDETAILS ( p

我有一个Oracle存储过程,我正试图首先使用EF代码(
DbContext
)使用DevArt Oracle驱动程序(最新版本)调用它。我不知道为什么这么难(我希望我使用的是SQL Server),但我无法让它工作。我正在做中描述的事情

我遵循了DevArt团队自己提供的答案,但仍然得到一个Oracle例外,尽管略有不同:

ora-01036非法变量名称/编号

这是我的存储过程的签名:

create or replace PROCEDURE GP_PARTICIPANTDETAILS 
(
  p_contracts_list VARCHAR2,
  p_participant_type CHAR DEFAULT NULL,
  p_dob_range_begin DATE DEFAULT NULL,
  p_dob_range_end DATE DEFAULT NULL,
  p_part_name VARCHAR DEFAULT NULL,
  p_ssn VARCHAR DEFAULT NULL,
  p_status_list VARCHAR2 DEFAULT NULL,
  p_start_index IN INT DEFAULT 0, 
  p_records_to_take IN INT DEFAULT 0,
  cp_result OUT SYS_REFCURSOR
)
我创建的所有参数都是这样的(我不想把它们都放在这里,因为有这么多,但我定义了所有参数的名称、值、类型和方向)

游标参数的定义如下:

OracleParameter paramOutputCursor = new OracleParameter("cp_cresult", OracleDbType.Cursor, System.Data.ParameterDirection.Output);      
string sqlQuery = "BEGIN OMNIDB.GP_PARTICIPANTDETAILS(:p_contracts_list, :p_participant_type, :p_dob_range_begin, :p_dob_range_end, :p_part_name, :p_ssn, :p_status_list, :p_start_index, :p_records_to_take, :cp_result); END;";

var details = context.Database.SqlQuery<ParticipantDetail>(sqlQuery, paramContracts, paramPartType, paramDobBegin, paramDobEnd, paramPartName, paramSSN, paramStatuses, paramStartIndex, paramRecordsToTake, paramOutputCursor).ToList();    
然后我这样称呼它:

OracleParameter paramOutputCursor = new OracleParameter("cp_cresult", OracleDbType.Cursor, System.Data.ParameterDirection.Output);      
string sqlQuery = "BEGIN OMNIDB.GP_PARTICIPANTDETAILS(:p_contracts_list, :p_participant_type, :p_dob_range_begin, :p_dob_range_end, :p_part_name, :p_ssn, :p_status_list, :p_start_index, :p_records_to_take, :cp_result); END;";

var details = context.Database.SqlQuery<ParticipantDetail>(sqlQuery, paramContracts, paramPartType, paramDobBegin, paramDobEnd, paramPartName, paramSSN, paramStatuses, paramStartIndex, paramRecordsToTake, paramOutputCursor).ToList();    
string sqlQuery=“BEGIN OMNIDB.GP_PARTICIPANTDETAILS(:p_contracts_list,:p_participant_type,:p_dob_range_BEGIN,:p_dob_range_end,:p_part_name,:p_ssn,:p_status_list,:p_start_index,:p_records_to_take,:cp_result);end;”;
var details=context.Database.SqlQuery(SqlQuery、paramContracts、paramPartType、paramDobBegin、paramDobEnd、paramPartName、paramSSN、paramStatuses、paramStartIndex、paramRecordsToTake、paramOutputCursor);
我尝试的每件事都会产生同样的错误。在参数名称前面加上
,而不加
。。。我验证了代码中参数的拼写是否与过程的声明相匹配


这里出了什么问题?

我们复制了这个问题并正在调查。我们会通知你结果的。如果您对Devart产品有任何疑问,请通过联系我们。

请更正代码中的参数名称:cp\u cresult->cp\u result。这应该可以解决这个问题。