Sql 在Ole DB中重新使用参数?
我正在编写一个Ole DB命令,需要重复一个特定的参数。基本上,我无法控制传入的参数(这是由(可怕的)框架处理的),也无法创建存储过程 这个查询看起来像Sql 在Ole DB中重新使用参数?,sql,db2,oledb,Sql,Db2,Oledb,我正在编写一个Ole DB命令,需要重复一个特定的参数。基本上,我无法控制传入的参数(这是由(可怕的)框架处理的),也无法创建存储过程 这个查询看起来像 DELETE FROM dbo.MyTable WHERE MyId = ? ; INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue) VALUES (?,?,?) 问题是框架只会传入MyId、SomeValue和SomeOtherValue的值(按顺序)。是否有某种方法可以在
DELETE FROM dbo.MyTable WHERE MyId = ? ;
INSERT INTO dbo.MyTable (MyId, SomeValue, SomeOtherValue)
VALUES (?,?,?)
问题是框架只会传入MyId、SomeValue和SomeOtherValue的值(按顺序)。是否有某种方法可以在删除中“使用”该MyId值,并且仍然能够在插入时再次访问它
如果相关的话,支持数据库是IBM DB2。否,对于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实例了,或者我很希望它能工作,但它应该…所以你是说不能更改它使用的SQL,也不能根据需要将参数加倍?我可以修改查询,但不能修改传入的参数。我也不能用存储过程替换查询。我绝对不能改为ADO.NET提供程序:)在相当有限的条件下工作。