【发布时间】:2011-05-11 06:31:56
【问题描述】:
嗨,
我使用 perl DBI do(),它将执行下面的 SQL 块,如下所示,在 SQL SERVER 2005 中执行
eval { my $result = do(<<SQL); BEGIN TRAN UPDATE table1 SET col1 = 999 where date = '2010-08-27' DELETE FROM table1 where date = '2010-08-30' COMMIT TRAN SQL $logger->info($result); };
现在我可以看到返回值 $result 只包含受第一个更新语句影响的行。所以我没有关于已删除行的任何信息,但我可以看到这些行确实在数据库中被删除了。
一般来说,如果我在 BEGIN TRAN、COMMIT TRAN 块中有一个 INSERT、DELETE、UPDATE 语句,并且如果整个块将由 DBI do() 方法提交,我需要知道插入语句的确切数量,更新的语句数和删除的语句数。
我知道 SQL SERVER 的 @@ROWCOUNT 会在每条语句之后给我受影响的行,但这是一个 SQL 服务器变量,仅在块内可见。是否可以将数据放入 perl 中?
有什么帮助吗?
【问题讨论】:
标签: database perl transactions dbi