Я мигрирую из Oracle в Tibero базу данных, используя C #.
Проблема заключается в том, что при добавлении параметра типа "CHAR" с помощью OleDbParameter данные не могут быть получены, если они не заполнены следующими пробелами в соответствии с размером столбца БД.
(Используя OracleParameter или OdbcParameter, можно выполнить обычный запрос без заполнения пустого пространства в качестве фактического размера столбца)?
String sSQL = @"SELECT *
FROM V_PROD_MA
WHERE CAR_TYPE = :CAR_TYPE
AND BODY_NO = :BODY_NO";
OleDbDataAdapter adapter = null;
//OracleDataAdapter adapter = null;
DataTable table = new DataTable();
try
{
Open();
adapter = new OleDbDataAdapter(sSQL, Connetion);
adapter.SelectCommand.Parameters.Add("CAR_TYPE", OleDbType.Char, 4).Value = sCarType;
adapter.SelectCommand.Parameters.Add("BODY_NO", OleDbType.Char, 6).Value = sBodyNo;
adapter.Fill(table);
}
Выше приведен тестовый исходный код, и когда я устанавливаю sCarType = 'D0F', данные извлекаются, но когда я устанавливаю sCarType = 'D0F', данные не извлекаются.
Фактический размер столбца char(4)
.
Вы можете предложить изменить оператор SQL WHERE
, например trim(car_type)
, но нам нужно изменить около 2000 операторов SQL, поэтому мы хотим избежать такого решения.
А также мы используем каркас для переноса каждой команды SQL, параметры и каркас не имеют информации о размере столбца для заполнения пробелами.
Есть ли другой способ избежать такого рода проблем?