Я вызываю процедуру из .Net, и я продолжаю получать сообщение об ошибке «неправильное количество или типы аргументов при вызове initiate_user_priv_app. параметры, типы, и я не вижу, где разъединение есть. у меня есть такое же количество параметров, одного порядка, так же типа переменных. Любая помощь будет высоко оценен. Спасибо!Неверное количество или типы аргументов - Ошибка Oracle в приложении .NET
Procedure Initate_User_Priv_App
(
P_Cred_Provider_Id In Cred_Provider.Cred_Provider_Id%Type,
P_Cred_Assignment_Id In Cred_Assignment.Cred_Assignment_Id%Type,
P_Priv_Application_Mtf_Id In Priv_Application.Priv_Application_Mtf_Id%Type,
P_Priv_Application_Type_Id In Priv_Application.Priv_Application_Type_Id%Type,
P_Person_Email_Txt In Sys_Person_Email.Person_Email_Txt%Type,
P_Communication_Type_Id In Sys_Person_Communication.Communication_Type_Id%Type,
P_Person_Communication_Txt In Sys_Person_Communication.Person_Communication_Txt%Type,
P_Audit_User_Id In Sys_User.User_Id%Type,
P_Audit_User_Mtf_Id In Mtf.Mtf_Id%Type,
P_Audit_Predecessor_Id In Priv_Application.Audit_Predecessor_Id%Type,
P_Priv_Application_Id Out Priv_Application.Priv_Application_Id%Type,
P_Result Out Varchar2,
P_Return_Code Out Number
using (OracleConnection conn = new OracleConnection(this.connString))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sql_privileging_functions.initate_user_priv_app";
#region Parameterization
OracleParameter outputApplicationId = new OracleParameter("p_priv_application_id", OracleDbType.Decimal, 18, null, ParameterDirection.Output);
OracleParameter outputResult = new OracleParameter("p_result", OracleDbType.Varchar2, 1000, null, ParameterDirection.Output);
OracleParameter outputResultCode = new OracleParameter("p_return_code", OracleDbType.Decimal, 18, null, ParameterDirection.Output);
cmd.Parameters.Add(new OracleParameter("p_cred_provider_id", credAssignment.CredProviderId));
cmd.Parameters.Add(new OracleParameter("p_cred_assignment_id", credAssignment.CredAssignmentId));
cmd.Parameters.Add(new OracleParameter("p_priv_application_mtf_id", credAssignment.AssignmentMtf));
cmd.Parameters.Add(new OracleParameter("p_priv_application_type_id", credAssignment.PrivApplicationTypeId));
cmd.Parameters.Add(new OracleParameter("p_person_email_txt", credAssignment.Email));
cmd.Parameters.Add(new OracleParameter("p_communication_type_id", credAssignment.PhoneTypeId));
cmd.Parameters.Add(new OracleParameter("p_person_communication_txt", credAssignment.Phone));
cmd.Parameters.Add(new OracleParameter("p_audit_user_id", credAssignment.AuditUserId));
cmd.Parameters.Add(new OracleParameter("p_audit_user_mtf_id", credAssignment.AuditUserMTFId));
cmd.Parameters.Add(new OracleParameter("p_audit_user_predecessor_id", credAssignment.AuditUserId));
cmd.Parameters.Add(new OracleParameter("p_priv_application_id", OracleDbType.Decimal, ParameterDirection.Output));
cmd.Parameters.Add(new OracleParameter("p_result", OracleDbType.Varchar2, ParameterDirection.Output));
cmd.Parameters.Add(new OracleParameter("p_return_code", OracleDbType.Decimal, ParameterDirection.Output));
cmd.Parameters.Add(outputApplicationId);
cmd.Parameters.Add(outputResult);
cmd.Parameters.Add(outputResultCode);
#endregion Parameterization
cmd.Connection = conn;
conn.Open();
cmd.ExecuteReader();
applicationId = outputApplicationId.Value == DBNull.Value ? 0 : (long)(OracleDecimal)outputApplicationId.Value;
result = outputResult.Value == DBNull.Value ? "" : (string)(OracleString)outputResult.Value;
resultCode = outputResultCode.Value == DBNull.Value ? 0 : (long)(OracleDecimal)outputResultCode.Value;
credAssignment.PrivApplicationId = applicationId;
credAssignment.Result = result;
credAssignment.ReturnCode = resultCode;
}
Это так, но мне нужны эти выходные параметры для заполнения трех переменных applicationId, result и resultCode. Есть ли другой способ? – JTRookie86
Если я это сделаю, я получаю ошибку Oracle.ManagedDataAccess.Types.OracleNullValueException, когда точка отладки попадает в applicationId = outputApplicationId.Value == DBNull.Value? 0: (long) (OracleDecimal) outputApplicationId.Value; – JTRookie86
Не могли бы вы написать свой ответ в разделе «Ответ», чтобы я мог отметить его как правильный ответ? Ваш ответ помог мне достичь резолюции, и это избавило меня от головной боли и времени. Если бы не ты, я бы не понял, что мои выходные параметры выписаны дважды – JTRookie86