2011-08-19 61 views
0

我正在寫一個Ole DB命令,我需要重複一個特定的參數。基本上情況是,我無法控制傳入的參數(這是由一個(可怕的)框架處理的),我無法創建存儲過程。在Ole DB中重新使用參數?

查詢看起來像

DELETE FROM dbo.MyTable WHERE MyId = ? ; 

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

問題是,框架僅會通過在身份識別碼,someValue中和SomeOtherValue(按順序)的值。有什麼方法可以在刪除中「使用」MyId值,並且仍然可以爲插入操作再次訪問它?

如果支持數據庫相關,則它是IBM DB2。

+0

所以你」說你不能改變它使用的SQL,也不能根據需要加倍參數? – billinkc

+0

我可以修改查詢,但不能傳入參數。我也無法用存儲過程替換查詢。我絕對不能改變爲ADO.NET提供者:)在相當有限的條件下工作。 –

回答

1

不,對於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實例更多的還是我倒是挺它的工作原理,但它應該...