2011-03-22 66 views
1

是否可以使用Informix和.Net在单个往返中运行多个DML语句?使用Informix在单个往返中执行多条语句

例(当然这不工作):

var cmd = someIfxConnection.CreateCommand(); 
cmd.CommandText = @" 
    insert into Foo(Bar, Baz) values (1, 2); 
    insert into Foo(Bar, Baz) values (3, 4);"; 
cmd.ExecuteNonQuery(); 
+2

我不明白为什么不能。你试过了吗 ? – Xavinou 2011-03-23 10:18:03

+0

@Xavinou:我是有史以来最大的白痴。它确实有效:-)也许我尝试了一些类似但无效的东西,并认为它不被允许。 – 2011-03-23 12:16:34

回答

0

据我所知,Informix的,您可以执行多个INSERT/UPDATE语句,你在你的例子都有。你不能做的是执行包含SELECT的多个语句。

例如,在SQL服务器是很常见的看到代码如下:

INSERT INTO Foo(Bar, Baz) VALUES (1, 2); SELECT @@IDENTITY AS Id 

这可以在单个指令来执行,并且将来自新插入的记录返回自动递增主键值。

但这在Informix中不起作用。你必须执行两个不同的SQL命令。一个插入记录和一个从systables表中检索Id:

SELECT DBINFO('sqlca.sqlerrd1') FROM systables WHERE tabid = 1 
+0

你说得对,老板。我想知道为什么我以前的测试失败。 – 2011-03-26 00:24:22