Мы мигрировали с oracle с12 на с19. И теперь у нас есть простой тестовый пример, который не проходит:
//arrange
string data = new string('x', 5000);
var connection = tm.GetConnection();
var createTableCmd = connection.CreateCommand(false);
createTableCmd.Text = "CREATE TABLE xx_temp (id NUMBER, text_long NCLOB, text_short NVARCHAR2(2000))";
createTableCmd.ExecuteNonQuery();
//act
var insertCmd = connection.CreateCommand(false);
insertCmd.Text = "INSERT INTO XX_TEMP (text_long) VALUES (@p1)";
var param = new OracleParameter("@p1", OracleDbType.NClob, data.Length, System.Data.ParameterDirection.Input);
param.Value = data;
insertCmd.Parameters.Add(param);
var insertResult = insertCmd.ExecuteNonQuery();
Последняя строка завершается с ошибкой: ORA-64219: invalid LOB locator encountered
Мы используем Devart.Data.Oracle
компонент. И я понятия не имею, что не так.
Что интересно, когда я пытаюсь подключиться к БД из powershell, используя Oracle.ManagedDataAccess.dll
, у меня нет проблем с использованием подобного кода.