Указание функции внутри оператора вставки в OleDbCommand

У нас есть устаревшие данные, которые хранятся в базе данных MSSQL как varchar, хотя данные действительно двоичные. В новом приложении мы используем OleDbCommand (поскольку мы пытаемся использовать общий код для доступа к базам данных MSSQL+Oracle+Sybase).

Я могу получить данные из базы данных, выполнив:

    DA.SelectCommand.CommandText = "select 
sequence_num, summary_num, line_num, CONVERT(varbinary, other_information) other_information 
from alex_test_bin";

Однако команда вставки:

   DA.InsertCommand.CommandText = "insert into alex2_test_bin 
(sequence_num, summary_num, line_num, other_information) 
values(?, ?, ?, CONVERT(varchar, ?))";

выдает эту ошибку (это происходит во время 'DA.Update(DT);'):

Не указано значение для одного или нескольких обязательных параметров.

В настоящее время я просто пытаюсь прочитать данные из alex_test_bin и вставить данные в alex2_test_bin. Между чтением и записью я использую метод SetAdded() для каждой строки из DT, чтобы все эти строки были вставлены.

Является ли мой оператор вставки неверным? Есть ли способ исправить это и иметь возможность использовать функции внутри оператора вставки? Я успешно выполнил оператор вставки вручную из диспетчера sql.


person Alex    schedule 03.10.2012    source источник
comment
В вашем синтаксисе INSERT нет ничего плохого, поскольку вы проверили себя в SSMS. Вы проверили значения параметров, как указано в сообщении об ошибке? См., например, этот вопрос.   -  person Pondlife    schedule 03.10.2012


Ответы (1)


Не видя вашего полного кода, кажется, что вы просто не добавляете параметры в файл DA.InsertCommand.

Для каждого параметра, обозначенного ?, вам необходимо добавить OleDbParameter:

DA.InsertCommand.Parameters.Parameters.Add("@sequence_num", OleDbType.Integer).Value = 42

Вам нужно добавить их к команде в том же порядке, в котором они указаны в операторе insert into.

person Lynn Crumbling    schedule 03.10.2012
comment
Как функция может быть вызвана внутри оператора вставки, например. вставить в мою таблицу значения (myfunction, 1,2,3)? - person bjan; 21.11.2012
comment
@bjan Опубликуйте это как новый вопрос, и вы, вероятно, получите ответы. - person Lynn Crumbling; 21.11.2012
comment
stackoverflow.com/questions/13494743/ - person bjan; 21.11.2012