Повторно использовать параметры в Ole DB? - PullRequest
0 голосов
/ 19 августа 2011

Я пишу команду Ole DB, и мне нужно повторить один конкретный параметр.В основном ситуация такова, что я не могу контролировать параметры, которые передаются (это обрабатывается (ужасной) структурой), и я не могу создать хранимую процедуру.

Запрос выглядит примерно так:

DELETE FROM dbo.MyTable WHERE MyId = ? ;

INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue) 
VALUES (?,?,?)

Проблема в том, что инфраструктура будет когда-либо передавать только значения для MyId, SomeValue и SomeOtherValue (в этом порядке).Есть ли какой-нибудь способ, которым я могу «использовать» это значение MyId при удалении и по-прежнему иметь возможность снова получить к нему доступ для вставки?

Резервная база данных - это IBM DB2, если это уместно.

1 Ответ

1 голос
/ 19 августа 2011

Нет, для соединений OLE DB? отображается на один параметр только один раз. Одним из преимуществ использования поставщика ADO.NET является то, что он использует именованные параметры.

Поскольку вы заявляете, что можете изменить запрос, он должен быть простым, просто смешивать и сопоставлять. Используйте параметры OLE DB для назначения локальной переменной, например

DECLARE @MyId int
SET @MyId = ?
DELETE FROM dbo.MyTable WHERE MyId = @myid ;

INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue) 
VALUES (@myId,?,?)

У меня больше нет экземпляра DB2, или я бы очень работал, но он должен ...

...