Как я могу получить эту хранимую процедуру для выполнения CALL, когда условие не равно? - PullRequest
0 голосов
/ 30 января 2012

У меня быстрый вопрос о MySql.У меня есть эта простая процедура хранения, которую я хотел бы сделать CALL для двух процедур хранения, когда условие выполнено.
Переменной @SDOuser назначается идентификатор пользователя, когда уровень доступа равен 10, а отметка времени оценивается для входа в систему.время между сейчас и 2 секундами назад.Получив этот набор, я хочу использовать его в качестве условия для своего блока IF.Здесь кроется проблема, она работает нормально, когда первый блок остается ИСТИНА, а ничего не следует.Но мне нужны пользователи, у которых уровень доступа меньше 10, и, похоже, это не отменяет условие, чтобы добраться до этого.

Вот код:

DROP PROCEDURE `getPositionGrid`//
CREATE DEFINER=<some name>  PROCEDURE `getPositionGrid`()
BEGIN   



  set @SDOuser = (SELECT DISTINCT(uu.uu_id) FROM tbl_logins ul 
                            INNER JOIN tbl_users uu
                            ON ul.ul_username = uu.uu_email

                            inner join tbl_access_level al
                            on al.al_id = uu.al_id
                            inner join tbl_positions up
                            on up.up_id = uu.up_id
                            inner join tbl_departments ud
                            on up.ud_id = ud.ud_id

  WHERE ul.ul_created  BETWEEN NOW() - INTERVAL 2 SECOND AND NOW());
  set @CurrUser = (select uu_id from tbl_users where al_id = 10 AND uu_id = @SDOuser);
  set @CurrUser1 = (select uu_id from tbl_users where al_id < 10 AND uu_id != @SDOuser);


  IF(@CurrUser) THEN  
    BEGIN
     CALL getPositionGridSDO();
    END;
  END IF;
  IF(@CurrUser1) THEN  
    BEGIN
     CALL getPositionGridALL();
    END;
  END IF;

END

//

1 Ответ

0 голосов
/ 30 января 2012

Попробуйте:

IF (@CurrUser IS NOT NULL) THEN  
    BEGIN
     CALL getPositionGridSDO();
    END;
END IF;
IF(@CurrUser1 IS NOT NULL) THEN  
    BEGIN
     CALL getPositionGridALL();
    END;
END IF;

В качестве альтернативы:

IF (@CurrUser > 0) THEN  
...
END IF;
IF(@CurrUser1 > 0) THEN  
...
END IF;

Надеюсь, это поможет!

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