Переменная переключения SQL в базе данных - PullRequest
0 голосов
/ 22 июня 2011

У меня есть процедура для таблицы в моей базе данных, но, похоже, она не выполняет то, что я хочу.Может ли кто-нибудь проверить, правильно ли я это делаю?Я новичок в SQL все вместе.

Это моя процедура.Предполагается изменить статус администратора с 1 на 0 и с 0 на 1, когда я сообщу об этом.Но по какой-то причине он меняет его и не меняет обратно: (

ALTER PROCEDURE [sesuser].[Login_Admin_Toggle]
(
    @loginID INT
)

AS
BEGIN

DECLARE @tmpId INTEGER;

SET @tmpId = (SELECT SESAdmin FROM [ses_users].[sesuser].[SESLogin] WHERE SESLoginID = @loginID);

IF (@tmpId = 1)
BEGIN
    SET @tmpId = 0
    RETURN
END
ELSE
    SET @tmpId = 1

UPDATE [ses_users].[sesuser].[SESLogin]
SET SESAdmin = @tmpId   
WHERE SESLoginID = @loginID

END

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Алекс К совершенно прав. Вы устанавливаете свою переменную на 0, а затем на RETURN, что означает, что вы никогда не получите оттуда инструкцию UPDATE.

Но, слегка касаясь, вы можете сделать все это в одном утверждении ...

BEGIN

  UPDATE [ses_users].[sesuser].[SESLogin]
  SET SESAdmin = 1 - SESAdmin
  WHERE SESLoginID = @loginID

END
1 голос
/ 22 июня 2011

Он не переключится назад, потому что вы RETURN и, следовательно, остановите выполнение, если @tmpId = 1, поэтому его никогда не обновляют до 0.

...