ВЫДЕЛЕННЫЙ NOCOUNT или ВОЗВРАТ @@ ROWCOUNT?

Я знаю, что это очень старая тема, но если кому-то интересно, я добавил этот хак в мою локальную копию git-svn:

23a24
> use POSIX qw/strftime/;
984a986
>           my $ra = Git::SVN::Ra->new($url);
987c989
<                           ra => Git::SVN::Ra->new($url),
---
>                           ra => $ra,
995a998,1014
>                                  my $cmt_author = get_commit_entry($d)->{author};
>                                  my $cmt_date   = get_commit_entry($d)->{date};
>                                  if ( defined $cmt_author ) {
>                                    foreach my $key ( keys %users ) {
>                                      my $i = index($cmt_author, $users{$key}[1]);
>                                      if ( $i != -1 ) {
>                                        print "Changed author to $key\n";
>                                        $ra->change_rev_prop($cmt_rev, 'svn:author', $key);
>                                        last;
>                                      }
>                                    }
>                                  }
>                                  if ( defined $cmt_date ) {
>                                    $cmt_date = strftime("%Y-%m-%dT%H:%M:%S.000000Z", gmtime($cmt_date));
>                                    print "Changed date to $cmt_date\n";
>                                    $ra->change_rev_prop($cmt_rev, 'svn:date', $cmt_date);
>                                  }
1758c1777
<   my %log_entry = ( log => '', tree => get_tree_from_treeish($treeish) );
---
>   my %log_entry = ( log => '', tree => get_tree_from_treeish($treeish), author => undef, date => undef );
1768a1788
>       my $date;
1774c1794,1797
<               $author = $1 if (/^author (.*>)/);
---
>           if (/^author (.*>) (\d+) ([\-\+]?\d+)$/o) {
>                 $author = $1;
>               $date   = Git::SVN::Log::parse_git_date($2, $3);
>         }
1792a1816,1817
>       $log_entry{author} = $author || undef;
>       $log_entry{date}   = $date   || undef;

Это против 1.9.1-1 (пакет deb). версия на Ubuntu 14.04). Это не настраивается, в том смысле, что если у вас есть файл users.txt, он будет использовать его, и он всегда будет пытаться установить дату. Также, если у вас есть несколько учетных записей SVN для данного пользователя git, он просто выберет одну.

И я только начинаю использовать его в гневе, но я думаю, что он мог бы сделать эту работу, скрестив пальцы!

С уважением, Адам

17
задан Charles 8 May 2012 в 17:34
поделиться

3 ответа

Используйте @@ RowCount. Он явный и прозрачный, он полностью контролируется вашим кодом, а не встроенным поведением.

Для параметра NOCOUNT можно вручную установить значение по умолчанию ВКЛ (Параметры> Выполнение запроса> SQL Server> Дополнительно). Если вы установите это таким образом, но затем объявите SET NOCOUNT OFF в своей хранимой процедуре, тогда этот локальный параметр имеет приоритет.

24
ответ дан 30 November 2019 в 12:07
поделиться

Я знаю, что установка SET NOCOUNT ON заставит DataAdapter подумать о конфликте параллелизма.

Вы можете прочитать об этом в MSDN . Если код будет использоваться DataAdapters, то, очевидно, не используйте SET NOCOUNT ON.

Похоже, что SqlCommand также имеет такое поведение , что, я думаю, является причиной проблемы с DataAdapter. (поскольку под капотом он будет использовать объект Command).

4
ответ дан 30 November 2019 в 12:07
поделиться

Не используйте RETURN для значений. По соглашению RETURN из хранимых процедур предназначен для кодов ошибок, 0 означает отсутствие ошибок, а не 0 означает какую-то проблему. Если вам нужны данные обратно, лучше всего это сделать с помощью параметра OUTPUT. Это немного противоречит интуиции, основанной на использовании return в других языках.

5
ответ дан 30 November 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: