У меня есть несколько запросов, которые проверяют запись в таблице, и если такой записи нет, она добавляется. В этом процессе участвуют 2 запроса:
1) select id from table where <conditions>
если есть какие-либо идентификаторы, соответствующие я ничего не делаю (или обновлять записи с идентификаторами, как я хочу), если нет идентификаторов, я выполняю второй запрос:
2) insert into table(<columns>) values(<values>)
Конечно, <conditions>
, <columns>
и <values>
являются правильными строками для их контекста.
Я хочу объединить эти 2 запроса в один:
insert into table(<values>)
select <parameter list>
where not exists(select id from table where <conditions>)
Таким образом, будет задействован только один запрос вместо 2.
Пример этого запроса:
insert into persons(name) select @Name where not exists (select id from persons where name = @Name)
Проблема в том, что я использую параметры для запросов, и когда я выполняю этот составной запрос, я получаю исключение, говорящее «Параметр не разрешен в этом месте. Убедитесь, что знак« @ »находится в допустимом месте или что действительно в этом утверждении SQL. "
Есть ли способ обойти параметры и не получить исключение для этого запроса?
Я использую классы, связанные с C # и SqlCe.