Возвращаемое значение хранимой процедуры - PullRequest
2 голосов
/ 03 мая 2020

У меня проблема, когда я выполняю эту хранимую процедуру:

IF NOT EXISTS (SELECT * FROM TBL_M 
               WHERE TYPE_M = 'reservation' 
                 AND NUM_DESK = @NUMBER_DESK 
                 AND ID_TIME = @ID_TIME)
BEGIN
    INSERT INTO TBL_M 
    VALUES ('reservation', @NUMBER_DESK, @NUM_USER, @ID_TIME)
END

Все работает правильно, единственная проблема в том, что я хочу знать, когда вставка выполняет вставку, а когда нет.

В C# Я использую следующий метод ExecuteNonQuery()

Но он всегда возвращает -1, как вы можете идентифицировать вставку и когда она не вставляется.

1 Ответ

2 голосов
/ 03 мая 2020

Объявление переменной

Declare @ROWCOUNT INT = 0

Назначение переменной

Select @ROWCOUNT = @@ROWCOUNT

Сразу после вставки (внутри начала-конца) либо return, либо select (тогда вам нужно использовать ExecuteQuery вместо ExecuteNonQuery) или иметь выходной параметр, чтобы получить значение @ROWCOUNT.

@ MickyD:

Переменная SQL @@ROWCOUNT содержит количество строк, затронутых последним оператором, в этом случае сразу после выполнения Insert. Если выполняется какая-либо другая операция, это значение больше не будет прежним, поэтому присвойте его локальной переменной и передайте обратно вызывающей стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...