【发布时间】:2015-09-29 13:30:45
【问题描述】:
我有一个带有 BLOB 字段的表,并且我正在向该表中插入一个二进制数据。除非我指定超过 2000 字节的二进制数据,否则一切顺利。在这种情况下,我会收到以下错误:
ERROR [HY104][ODBC Oracle Wire Protocol driver]Invalid precision value. Error in parameter 1
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
对于 BLOB 数据类型,是否有任何原因导致操作失败并出现此错误?我在 Oracle 11.2 和 12 上测试了这种行为,我看到了相同的行为。 这是我用来更新 BLOB 的代码:
public override void WriteBlob(int id, byte[] data)
{
var cmd = GetConnection().CreateCommand();
cmd.CommandText = "update TB_BLOBS set TB_BLOB=? where TB_ID=?";
cmd.Parameters.Add(new OdbcParameter
{
DbType = DbType.Binary,
ParameterName = "TB_BLOB",
Value = data
});
cmd.Parameters.Add(new OdbcParameter
{
DbType = DbType.Int32,
ParameterName = "TB_ID",
Value = id
});
cmd.ExecuteNonQuery();
}
它仅在 data.Length
【问题讨论】: