이 오류를 해결하는 방법을 모르겠습니다.'Oracle.ManagedDataAccess.Types.OracleDecimal []'유형의 객체를 'System.IConvertible'유형으로 변환 할 수 없습니다.
나는 클래스
public class MyClass
{
public OracleDecimal ID { get; set; }
public string FIELD1 { get; set; }
public string FIELD2 { get; set; }
public OracleDate FIELD3 { get; set; }
}
내가 다음 SP로 전화를 걸 목록을 내장에게 있습니다.
OracleParameter p_ID = new OracleParameter("p_ID", OracleDbType.Decimal, records.Select(x => x.ID).ToArray(), ParameterDirection.Input);
OracleParameter p_FIELD1 = new OracleParameter("p_FIELD1", OracleDbType.Varchar2, records.Select(x => x.FIELD1).ToArray(), ParameterDirection.Input);
OracleParameter p_FIELD2 = new OracleParameter("p_FIELD2", OracleDbType.Varchar2, records.Select(x => x.FIELD2).ToArray(), ParameterDirection.Input);
OracleParameter p_FIELD3 = new OracleParameter("p_FIELD3", OracleDbType.Date, records.Select(x => x.FIELD3).ToArray(), ParameterDirection.Input);
var result = context.Database.ExecuteSqlCommand("BEGIN MY_PACKAGE.MY_PROC(:p_ID, :p_FIELD1, :p_FIELD2, :p_FIELD3); END;", p_ID, p_FIELD1, p_FIELD2, p_FIELD3);
그러나 나는 'Oracle.ManagedDataAccess.Types.OracleDecimal은 []' 'System.IConvertible'입력 유형의 개체를 캐스팅 할 수 없습니다 오류 를 얻을.
이 오류를 해결하는 방법을 모르겠습니다. 내 목록을 만들 때
나는 다음과 같습니다
OracleDate myDate = new OracleDate(DateTime.Now);
var myRecord = new MyClass
{
ID = ((OracleDecimal)ID).Value,
FIELD1 = field1,
FIELD2 = field2,
FIELD3 = myDate
};
어떤 제안을 감상 할 수있다.
이 경우 저장된 프로 시저 x 번을 호출합니다. proc가 한 번만 호출되도록 proc에 데이터 배열을 전달하려고합니다. – PrivateJoker
@ JDS 그런 다음 프로 시저 서명을 업데이트해야합니다. 지금과 같이 프로 시저는 하나의 값만 인수로 취할 수 있으며 목록은 아닙니다. –
설명해 주셔서 감사합니다. 서명을 변경 했으므로 SP를 한 번 호출하고 3000 레코드를 0.24 초에 삽입 할 수 있습니다. – PrivateJoker