2014-10-15 16 views
0

우리는 CHAR(16 BYTE) 컬럼을 포함하는 11gr2 테이블을 가지고 있습니다.OracleType.Char에서 OracleDbType으로 ??? ??? - ODP.NET 12.1 변환

C#에서는 Microsoft의 사용되지 않는 OracleClient을 사용하여 OracleType.Char에 C# 문자열 바인드 변수가 포함 된 매개 변수화 된 쿼리를 작성할 수 있습니다. 쿼리가 작동합니다. 에 ODP.NET 12.1를 마이그레이션 할 때 OracleDbType.Char를 사용하는 경우

OracleParameter ci = new OracleParameter(); 
    ci.ParameterName = "ci"; 
    ci.OracleType = OracleType.Char; 
    ci.Value = "A020"; 

    OracleCommand cmd = new OracleCommand(sql, OraConn); 
    cmd.Parameters.Add(ci); 

나는 주조 오류가 발생합니다.

cmd.Parameters.Add(new OracleParameter("cc", OracleDbType.Char).Value = "A020"); 

어떤 종류의 OracleDbType을 사용해야합니까?

+0

첫 번째 사항 먼저 ODP.NET이 MS Oracle Client가 bindbyname으로 기본 설정되는 Bind by Position로 설정되었음을 알고 있습니까? ODP.NET에서 BindbyName = true를 설정하여 OracleClient 작동을 얻을 수 있습니다. 이것이 귀하의 문제의 원인이 아닌지 확인하십시오. –

+0

@Christian - bindbyvalue가 문제가 아니라는 것을 확인할 수 있습니다 - 많은 감사 – radiator

+0

"bindbyVALUE"가 아닙니다 ......... OracleClient에서 매개 변수 이름은 모두 자리 표시 자와 일치해야합니다. ODP.NET에서는 매개 변수를 만드는 순서가 중요합니다. 마이그레이션을 수행하는 사람들에게이 오류가 발생하는 가장 일반적인 원인입니다. –

답변

0

OracleDbType.NVarchar2를 사용하십시오. 또한 데이터 크기를 지정할 수 있습니다