Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Ole DB中重新使用参数?_Sql_Db2_Oledb - Fatal编程技术网

Sql 在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的值(按顺序)。是否有某种方法可以在

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

这个查询看起来像

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提供程序:)在相当有限的条件下工作。