Лучший способ работать с транзакциями в Studio управления SQL Server MS

  1. после применения предложенных исправлений к коду,
  2. и применения аксиомы: только одно утверждение на строку и (самое большее) одно объявление переменной на утверждение. [114 ]
  3. следующий предложенный код выполняет желаемые результаты функциональности: правильно компилирует, проверяет и обрабатывает ошибки; вызов строки формата printf() заканчивается на «\ n», поэтому данные немедленно выводятся на терминал, отображая соответствующий способ извлечения цифры от «int» и собирать сумму этих цифр

и теперь, предлагаемый код:

#include <stdio.h>

int main( void ) 
{
    int n;
    int digit;
    int  sum = 0;

    if( scanf("%d", &n) != 1 )
    {
        fprintf( stderr, "scanf for initial value failed" );
        return 1;
    }

    while( n )
    { 
        digit = n % 10;  // extract a digit
        n /= 10;         // reduce the working number
        sum = sum + digit;
    }

    printf("%d\n", sum);   // use '\n' so value immediately output to terminal
    return 0;
} 
122
задан arcain 11 April 2013 в 00:33
поделиться

1 ответ

easisest вещь сделать состоит в том, чтобы перенести Ваш код в транзакцию и затем выполнить каждый пакет строки кода T-SQL с методической точностью.

, Например,

Begin Transaction

         -Do some T-SQL queries here.

Rollback transaction -- OR commit transaction

, Если Вы хотите включить обработку ошибок, можно сделать так при помощи ПОПЫТКИ... БЛОК ВЫГОДЫ. Если ошибка происходит, можно затем откатывать транзакцию в блоке выгоды.

, Например:

USE AdventureWorks;
GO
BEGIN TRANSACTION;

BEGIN TRY
    -- Generate a constraint violation error.
    DELETE FROM Production.Product
    WHERE ProductID = 980;
END TRY
BEGIN CATCH
    SELECT 
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_PROCEDURE() AS ErrorProcedure
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage;

    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;
GO

Дополнительную информацию см. в следующей ссылке.

http://msdn.microsoft.com/en-us/library/ms175976.aspx

Hope это помогает, но сообщите мне, нужно ли Вам больше деталей.

221
ответ дан 24 November 2019 в 01:24
поделиться
Другие вопросы по тегам:

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