HI,
Я использую 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 содержит только те строки, на которые повлиял первый оператор обновления. Так что у меня нет никакой информации об удаленных строках, но я вижу, что строки действительно удалены в базе данных.
В общем, если у меня есть оператор INSERT, DELETE, UPDATE внутри блока BEGIN TRAN, COMMIT TRAN и если весь блок будет передан методом DBI do (), мне нужно знать точное количество вставленных операторов, количество операторовобновлено и количество заявлений удалено.
Я знаю, что @@ ROWCOUNT SQL SERVER даст мне строки, на которые влияют после каждого оператора, но это переменная сервера SQL, которая будет видна только внутри блока.Можно ли получить данные в Perl?
Любая помощь?