在Ole DB中重用参数?

时间:2011-08-19 02:00:37

标签: sql db2 oledb

我正在写一个Ole DB命令,我需要重复一个特定的参数。基本上情况是我无法控制传入的参数(这是由(可怕的)框架处理)我无法创建存储过程。

查询类似于

DELETE FROM dbo.MyTable WHERE MyId = ? ;

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

问题是框架只会传递MyId,SomeValue和SomeOtherValue(按此顺序)的值。有没有什么方法可以在删除中“使用”MyId值,并且仍然可以再次访问插入?

支持DB是IBM DB2,如果它是相关的。

1 个答案:

答案 0 :(得分: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实例,或者我的工作非常有效,但它应该......