odp.net을 사용하여 입력 매개 변수로 Oracle 저장 프로 시저에 바이트 배열을 전달할 때 한 가지 문제점이 있습니다.바이트 배열을 oracle 저장 프로 시저에 전달하십시오.
여기서 저장 과정 서명 :
SOMEPROCEDURE(session IN NUMBER, data IN RAW)
다음 절차 호출 C# 코드가있다 :
var cmd = new OracleCommand("SOME_PROCEDURE", _connection);
cmd.CommandType = CommandType.StoredProcedure;
var bt = new byte[]{1,68,0,83,128,1};
OracleParameter sessionId = new OracleParameter("dbSessionId", OracleDbType.Decimal, new OracleDecimal(_dbSessionId), ParameterDirection.Input);
OracleParameter data = new OracleParameter("statusData", OracleDbType.Raw, new OracleBinary(bt), ParameterDirection.Input);
cmd.Parameters.Add(sessionId);
cmd.Parameters.Add(data);
cmd.ExecuteNonQuery();
이 코드는 (저장 절차는 데이터를 얻을 수없는 예외를 발생) 실패 때문에 바이트 배열 thereis 번호 128!, 내가 128 다른 번호에, 덜 128, 그것은 잘 작동!
어떻게해야합니까?
'OracleBinary' 생성자가'Int32' 배열을 매개 변수로 사용하지 않으며'byte' 배열에서'int' 배열로의 암묵적인 대화가 없습니다. –
나는 그것을 알지 못 했으므로 바이트 배열 2 개를 만들려고 시도 할 수있다. – Thealon
바이트는 작지 않습니다. 바이트는 8 비트 부호없는 정수이므로 최대 값은 255입니다. 오라클 데이터 행에는 부호없는 8 비트 값이 포함되지 않습니다. – IComparable