2011-08-19 33 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实例更多的还是我倒是挺它的工作原理,但它应该...