我正在写一个Ole DB命令,我需要重复一个特定的参数。基本上情况是我无法控制传入的参数(这是由(可怕的)框架处理)我无法创建存储过程。
查询类似于
DELETE FROM dbo.MyTable WHERE MyId = ? ;
INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue)
VALUES (?,?,?)
问题是框架只会传递MyId,SomeValue和SomeOtherValue(按此顺序)的值。有没有什么方法可以在删除中“使用”MyId值,并且仍然可以再次访问插入?
支持DB是IBM DB2,如果它是相关的。
答案 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实例,或者我的工作非常有效,但它应该......